在Realm中使用反向关系查询对象的正确方法

时间:2017-09-11 23:43:34

标签: ios swift realm

我目前无法查询以反向关系存储的数据。我有以下代码

"style=direction:rtl"

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

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

当我创建FormAnswer对象时,我会执行以下操作:

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

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

当我试图查询它时,我什么都没得到!

 try! realm.write {
            let answer = FormAnswer(value: ["key": key, "answer": answer, "form" : parentForm!]) // parentForm is of type "form"
            realm.add(answer, update: true)
}

我已经使用Realm Browser检查了域文件,并且还有FormAnswer的条目。但是只有2个字段(键和答案),并且它们似乎不是我的Form对象的链接。

有没有人对如何解决这个问题有任何想法?

由于

1 个答案:

答案 0 :(得分:3)

LinkingObjects是计算属性,不能直接变异。相反,您可以通过更改关系的另一面来修改其值。

尝试:

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

这会将新答案直接添加到Form的{​​{1}}列表中,并会生成包含answer的答案form属性