2017-01-31 4 views
0

私は、Realm 2.4.2でSwift 3.0.2で書かれた、iOS 10.0を対象とするアプリケーションで作業しています。書き込み後に削除されたクラスのオプションプロパティ

私は、このデータモデルがあります:私はこのコードを使用して、ユーザーのデータを保存するために

class User: Object { 

    var company: Company? = Company() 
    dynamic var password = "" 
    dynamic var email = "" 

    func persist() { 
     let realm = try! Realm() 
     try! realm.write { 
      realm.add(self) 
     } 
     print(company) 
    } 
} 

class Company: Object { 
    dynamic var id = "" 
    dynamic var name = "" 
} 

を:それはこれを行う理由

let user = User() 
user.email = "[email protected]" 
user.password = "hey" 

user.company?.name = "apple" 
user.company?.id = "12" 

// here, if I check with debugger, all variable are properly filled 
user.persist() 

// here : company is = nil 
// it is nil at the 'print(company) 
// it is not nil before 

誰かが説明できますか?

+0

ええと、私はあなたのコメントの1つに気付きました。あなたはデバッガを介して 'company'プロパティの値を_only_チェックしていますか? – bdash

答えて

0

dynamic修飾子を使用して、dynamic修飾子を宣言して、Realm Swiftが基礎となるRealmファイルの値を取得するゲッターを提供できるようにする必要があります。 dynamic修飾子がない場合、Swiftコンパイラは、Realmファイルからロードされたオブジェクトのデータを含まない、基礎となるインスタンス変数へのアクセスを生成します。

+0

こんにちは、フィードバックありがとうございます。不都合なことに、それは可能ではありません: –

+0

私はエラーを取得します:そのタイプはObjective-cで表現できないため、プロパティを動的にマークすることはできません。 –

+0

私はまた、Companyクラスのdelcarationの前に@objcを追加しようとしましたが、成功しませんでした。(通常の答えの代わりにいくつかのコメントをしなければならない...) –

関連する問題