2017-05-11 5 views
0

私はUserモデルがあります:realmオブジェクトでシングルトンを使用する方法?

class User: Object, Mappable { 
    dynamic var account: String? 
    dynamic var balabala 

    static var current: User { 
     return realm.objects(User.self) ?? User() 
    } 
} 

をしかし、それはエラーがスローされます:Instance member 'realm' cannot be used on type 'User' レルムオブジェクトとシングルトンを使用する方法は? すべてのヘルプは高く評価され

+0

私はswiftの管理対象オブジェクトが既に 'realm'プロパティーを受け取っていると思っています。それは奇妙です。 – EpicPandaForce

+0

まあまあまあまあこのエラーのように、あなたはレルムのクラスのインスタンスを作成することはできません、より良いオプションは1になります。別のクラスを作成し、アカウントマネージャーのいくつかの種類とあなたのシングルトンを置く2.シングルトンだけを残して、あなたのrealmオブジェクトには、つまり、すべてのユーザーのプライマリIDを作成し、現在のユーザーを削除するか、存在するかどうかを確認することができます。 –

答えて

0

スウィフトコンパイラはrealmが参照するものを知っていないあなたのcurrent財産でので、realmと呼ばれるインスタンス変数を定義していないあなたのUserクラス。

あなただけのデフォルトのレルムを使用する場合、あなたはそれの新しいインスタンスを初期化する必要があります。

try! Realm().objects(User.self) 

そうでなければカムはコメントで言及したように、あなたのシングルトンを管理するための別のクラスを設定しますレルムを取得し、代わりにそのクラスからレルムを取得します。

+0

レルムをグローバル変数として定義しました。 Realm() ' –

+0

これは知っておいてよかったです。これはSwiftの多くのひどいエラーメッセージの1つです。本当の問題があります: 'realm.objects(User.self)'は 'Results 'を返します。コードを 'realm.objects(User.self).first ??に変更する必要がありますか? User() 'の場合、型が一致せず、Swiftの型チェッカーが混乱します。 – AustinZ

+0

申し訳ありませんが、私は動作しません同じエラー –