gpt4 book ai didi

ios - 将新对象添加到 Realm 中的现有列表

转载 作者:IT王子 更新时间:2023-10-29 05:41:55 24 4
gpt4 key购买 nike

我有两个类(class)。首先看起来像这样:

class Person: Object {
dynamic var owner: String?
var dogs: List<Dogs>()
}

第二类看起来像这样:

class Dogs: Object {
dynamic var name: String?
dynamic var age: String?
}

现在在“viewDidLoad”的 ViewController 中,我用空的 List 创建对象 Person 并将其保存在 Realm 中

func viewDidLoad(){
let person = Person()
person.name = "Tomas"
try! realm.write {
realm.add(Person.self)
}
}

效果很好,我可以创建 Person,当我尝试在 ViewDidLoad 中读取 SecondViewController 中的数据时,问题就开始了:

var persons: Results<Person>?

func viewDidLoad(){
persons = try! realm.allObjects()
}

并尝试将新的 Dog 添加到 List 中,在按钮操作中执行此操作:

@IBAction func addDog(){
let newDog = Dogs()
newDog.name = "Rex"
newDog.age = "2"

persons[0].dogs.append(newDog)

// in this place my application crashed

}

这里我的应用程序崩溃并显示一条信息:Can only add, remove, or create objects in a Realm in a write transaction - first call beginWriteTransaction on an RLMRealm instance. 如何添加新的 DogList 以及如何更新 person[0]?我使用 SWIFT 3.0

最佳答案

persons属性类型为 Results<Person> ,这是一个包含 Person 的集合由 Realm 管理的对象。为了修改托管对象的属性,例如将新元素附加到列表属性,您需要在写入事务中。

try! realm.write {
persons[0].dogs.append(newDog)
}

关于ios - 将新对象添加到 Realm 中的现有列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38489806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com