首页
学习
活动
专区
圈层
工具
发布

回溯域
EN

Stack Overflow用户
提问于 2015-12-23 02:24:16
回答 1查看 113关注 0票数 2

嗨,我在玩领域,我试着得到和输出:

代码语言:javascript
复制
Fido has 1 owners (["John"])
Rex has 2 owners (["Mary","Bob"])

尽管我一直在获取这个输出:

代码语言:javascript
复制
Fido has 1 owners (["John"])
Rex has 1 owners (["Mary"])
Rex has 1 owners (["Bob"])

下面是我使用的代码:

代码语言:javascript
复制
// 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>()
}

如果你能帮忙的话谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-23 03:24:59

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34427671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档