草庐IT

ios - Realm swift : How to create To-One Relationships properly?

coder 2023-09-15 原文

假设我有:

class Dog: Object {
    dynamic var race = ""
    dynamic var name = ""

    override static func primaryKey() -> String? {
        return "race"
    }
}

class Person: Object {
    dynamic var name = ""
    dynamic var address = ""
    dynamic var dog: Dog?

    override static func primaryKey() -> String? {
        return "name"
    }
}

首先我创建了一个 Dog 并保存它:

let dog = Dog()
dog.race = "Dalmatian"

try! realm.write {
    realm.add(dog, update: true)
}

现在我在另一个类中创建了一个Person。文档对这种情况不太清楚。在创建关系之前,是否需要先保存对 Dog 的更改?:

let person = Person()
person.name = "Jim"

// retrieve dog from realm: 

if let dog = realm.objectForPrimaryKey(Dog.self, key: "Dalmatian") {
    dog.name = "Rex" // Owner gives dog a new name

    // Question:
    // Saving changes to Rex: is this step neccessary?
    try! realm.write {
         realm.add(dog, update: true)
    }

    person.dog = dog
}

try! realm.write {
    realm.add(person, update: true)
}

最佳答案

不行,会导致崩溃

if let dog = realm.objectForPrimaryKey(Dog.self, key: "Dalmatian") {
    dog.name = "Rex" // Owner gives dog a new name

    person.dog = dog
}

如果你想更新dogname,这样写:

if let dog = realm.objectForPrimaryKey(Dog.self, key: "Dalmatian") {

        try! realm.write({ 
            dog.name = "Rex"
        })

        person.dog = dog

    }

查看更多:Realm.io/updating-objects

关于ios - Realm swift : How to create To-One Relationships properly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557268/

有关ios - Realm swift : How to create To-One Relationships properly?的更多相关文章

随机推荐