在Realm中有可能获得一对一关系的反比关系吗?
例如:
class Dog: Object {
dynamic var name: String?
dynamic var owner: Person?
}
class Person: Object {
dynamic var name: String?
let dog = LinkingObjects(fromType: Dog.self, property: "owner").first
}
let person = Person()
person.name = "Harry"
try! realm.write {
realm.add(person)
}
let dog = Dog()
dog.name = "Fido"
dog.owner = person
try! realm.write {
realm.add(dog)
}
print(person.dog?.name) // -> result is nil
Run Code Online (Sandbox Code Playgroud)
并且:
let arbitraryPerson = realm.objects(Person).filter("name contains 'Harry'").first!
let dogOwned = arbitraryPerson.dog
print(dogOwned?.name) // -> result is nil
Run Code Online (Sandbox Code Playgroud)
似乎ownDog总是如此nil.为什么不能确定反比关系?或者应该dog始终是list<T>类型(即多对多关系)来强制这些对象之间的关系?在这种情况下,我得到它的工作,但强迫一个多对多的关系感觉不正确.
该LinkingObjects对象必须是域模型对象的属性知道什么反对它去用:
class Person: Object {
dynamic var name: String?
let _dogs = LinkingObjects(fromType: Dog.self, property: "owner")
var dog: Dog? { return _dogs.first }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |