【问题标题】:Backlinking Realm反向链接领域
【发布时间】:2016-03-29 09:58:50
【问题描述】:

嗨,我正在玩 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>()
}

如果你能提供帮助,谢谢。

【问题讨论】:

    标签: swift2 realm xcode7.2


    【解决方案1】:

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

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

    【讨论】:

    • 好的,我明白你的意思了。我将不得不四处玩耍并弄清楚如何做到这一点。谢谢。
    • 别担心!是的,在这种情况下,这应该只是不与主人一起创造狗的问题。如果您还有其他问题,请告诉我!如果没有,请随时将此问题标记为已回答。 ;)
    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多