swift - 如何在Realm DB Swift中更新对象列表

标签 swift 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)
    }
 }

这似乎对添加元素有效。那么,如何更新数组中的单个元素并替换整个数组以确保其持续存在?

最佳答案

基本上,我们的想法是用相同的主键创建一个新的对象,其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应移除。

关于swift - 如何在Realm DB Swift中更新对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49546847/

相关文章:

ios - 方法执行完成后在 Controller 之间传递数据 [SWIFT]

swift - iPhone X 的横幅广告? [ swift ]

java - Realm:如果应用程序及其库之一使用 Realm 并设置(两者)defaultConfiguration,那么 defaultInstance 是什么?

ios - 从 Swift 和 React Native 访问相同的持久存储

objective-c - Realm.io 关系查询

swift - 在 Xamarin 应用程序中绑定(bind) Swift 库时出现代码签名问题

swift - 在一个动画循环后隐藏 SKSpriteNode

ios - 核心动画 - 组中动画的单独计时

ios - RLMException',原因 : 'Property ' productos' requires a protocol defining the contained type - example: RLMArray

ios - 带有 Realm 支持的数据库和在线同步的 UITableView