我目前在查询存储在反向关系中的数据时遇到问题。我有以下代码
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"
}
}
当我创建一个 FormAnswer 对象时,我执行以下操作:
try! realm.write {
let answer = FormAnswer(value: ["key": key, "answer": answer, "form" : parentForm!]) // parentForm is of type "form"
realm.add(answer, update: true)
}
当我尝试查询它时,我什么也得不到!
let previousValue = realm.objects(FormAnswer.self).filter("key == %@ AND ANY form.id == %@", key, parentForm!.id).first?.answer
我已经使用 Realm 浏览器检查了 Realm 文件,并且有一个 FormAnswer 的条目。但是只有 2 个字段(键和答案),而且似乎没有指向我的 Form 对象的链接。
有人知道我该如何解决这个问题吗?
谢谢
最佳答案
LinkingObjects
是一个计算属性,不能直接改变。相反,您可以通过更改关系的另一端来修改其值。
尝试:
try! realm.write {
parentForm.answers.add(FormAnswer(value: ["key": key, "answer": answer]))
}
这会将新答案直接添加到 Form
的 answer
列表中,并将导致答案的 form
属性包含 parentForm
.
关于ios - 在 Realm 中查询具有反向关系的对象的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46165806/