反向领域

uplearnedu.com

嗨,我正在与Realm合作,我正在尝试获取和输出以下内容:

Fido has 1 owners (["John"])
Rex has 2 owners (["Mary","Bob"])

尽管我不断获得以下输出:

Fido has 1 owners (["John"])
Rex has 1 owners (["Mary"])
Rex has 1 owners (["Bob"])

这是我正在使用的代码:

// this in the app delegate
 try! realm.write {
            realm.create(Person.self, value: ["John", [["Fido", 1]]])
            realm.create(Person.self, value: ["Mary", [["Rex", 2]]])
            realm.create(Person.self, value: ["Bob", [["Rex", 2]]])
        }

        // Log all dogs and their owners using the "owners" inverse relationship
        let allDogs = realm.objects(Dog)
        for dog in allDogs {
            let ownerNames = dog.owners.map { $0.name }
            print("\(dog.name) has \(ownerNames.count) owners (\(ownerNames))")
        }


class Dog: Object {
    dynamic var name = ""
    dynamic var age = 0
    var owners: [Person] {
        // Realm doesn't persist this property because it only has a getter defined
        // Define "owners" as the inverse relationship to Person.dogs
        return linkingObjects(Person.self, forProperty: "dogs")
    }
}

class Person: Object {
    dynamic var name = ""
    let dogs = List<Dog>()
}

谢谢您的帮助。

从外观上看Rex,每次向数据库添加新所有者时,您都在创建一个完全独立的副本,而不是重复使用同一副本。

最好Dog事先单独创建对象,然后在创建对象时直接引用这些Person对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章