2016-04-07 9 views
2

これは本当に基本的ですが、私はSwiftを使用してレルムデータベースからタイプのすべてのオブジェクトを取得する方法を見つけることができません。はい、はい:レルム結果オブジェクトタイプ

var dogs = try! Realm().objects(Dog) 

犬の変数を事前に宣言して初期化し、後でオブジェクトをロードする場合はどうすればよいですか? Like:

var dogs = ??? 
dogs = realm.objects(Dog) 

この場合、可変犬のタイプはどうすればよいですか?

答えて

7

Realm.objects(_:)のシグネチャは次のとおりです。

public func objects<T: Object>(type: T.Type) -> Results<T> 

署名はあなたがrealm.objects(Dog)としての機能を呼び出すときに、戻り値の型はResults<Dog>になることを示しています。

あなたは変数を宣言し、同じ機能で、後でそれを初期化したい場合は、単にのようなので、初期からの宣言を分離することができます:

let dogs: Results<Dog> 

// … 

dogs = realm.objects(Dog) 

あなたはメンバ変数を宣言し、する必要がある場合あなたは、オプションとvarを使用して宣言する必要があり、init後にそれを初期化:

var dogs: Results<Dog>? 

// … 

dogs = realm.objects(Dog) 
+1

ありがとうございます。私はこれで1時間10分を無駄にした。 Realmのドキュメントが、Webインクが高価なものなど、最も基本的な例で型推論を使用する理由は不思議です。 – TimSim

+0

レルムのマニュアルでは、イディオミックなSwiftを使用しようとしています。明示的な型情報を追加すると、支援するよりも多くの場合読みやすさがわかりにくくなります。 APIリファレンスのドキュメントには、関連するタイプに関する詳細情報が含まれています。 – bdash

-2

としてだけでなく、結果あなたはまた、リストを使用することができます。これは、One:Manyの例でオブジェクトを返す場合に便利です。

国と都市の2つのモデルがある場合、国には複数の都市があります。

var rlmCountry: Country! 
var rlmCities: List<City>? 

rlmCities = rlmCountry.cities 
+0

これは安全ではないようです!そこに潜んでいます... –

+0

そうです、何かを強制するのは悪い迅速です。 –