2017-09-11 22 views
1

Inverseリレーションシップに格納されたデータを照会するのに現在問題があります。Realm内のInverseリレーションシップを使用してオブジェクトを照会する適切な方法

そして、私はそれを照会しようとすると、私は何を取得:私は次の操作を行いFormAnswerオブジェクトを作成するとき、私は次のコード

class Form: Object { 
    dynamic var id: String = NSUUID().uuidString 
    ... 
    var answers = List<FormAnswer>() 

    override static func primaryKey() -> String? { 
     return "id" 
    } 
... 
} 

class FormAnswer: Object { 
    dynamic var key = "" 
    dynamic var answer = "" 
    let form = LinkingObjects(fromType: Form.self, property: "answers") 

    override static func primaryKey() -> String? { 
     return "key" 
    } 
} 

を持っています!

let previousValue = realm.objects(FormAnswer.self).filter("key == %@ AND ANY form.id == %@", key, parentForm!.id).first?.answer 

レルムブラウザでレルムファイルをチェックしましたが、FormAnswerのエントリがあります。しかし、2つのフィールド(キーと答え)しかなく、フォームオブジェクトへのリンクがないようです。

私はこれをどのように修正することができますか?

おかげ

答えて

3

LinkingObjectsは、計算されたプロパティであり、直接的に変異させることはできません。代わりに、関係のもう一方の側を変更して値を変更します。

試してみてください。

try! realm.write { 
    parentForm.answers.add(FormAnswer(value: ["key": key, "answer": answer])) 
} 

これはFormさんanswerリストに直接新しい答えを追加し、parentFormを含む答えのform財産になります。

関連する問題