如何更新Realm DB Swift中的对象列表

时间:2018-03-29 01:56:27

标签: swift realm

我正在尝试找到更新Realm对象中列表的正确方法。例如:

class Person: Object {
    @objc dynamic var id: String = ""
    let children = List<Child>()
}

//Adding an item to the list
func add(child: Child, _ completion: (DBError?) -> Void) {
    do {
        let ctx = try Realm()

        if let person = ctx.objects(Person.self).last {

            try ctx.write({
                person.children.append(child)
                completion(nil)
            })
    } catch {
        completion(DBError.unableToAccessDatabase)
    }
 }

这似乎适用于添加元素。那么如何更新数组中的单个元素以及替换整个数组以确保它仍然存在?

1 个答案:

答案 0 :(得分:1)

基本上,我们的想法是创建具有相同主键且update:值等于true的新对象,并将其附加到List

let childValue = // child
let child = realm.create(Child.self, value: childValue, update: true)
person.children.append(child)

此外,这是非法的:

let var children = List<Child>()

var应该删除。