如何使用Realm确定一对一关系的反比关系?

Ger*_*ard 2 realm ios swift

在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>类型(即多对多关系)来强制这些对象之间的关系?在这种情况下,我得到它的工作,但强迫一个多对多的关系感觉不正确.

Tho*_*yne 5

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)