在Realm中更新多个属性而不触及其他(已保存)值

时间:2018-02-04 15:08:30

标签: swift realm

在阅读docs时,它说我应该通过字典更新单个(或多个)字段:

var person = ["personID": "My-Primary-Key", "name": "Tom Anglade"]

// Update `person` if it already exists, add it if not.
let realm = try! Realm()
try! realm.write {
    realm.add(person, update: true)
}

我不知道他们如何编译,因为我收到了这个错误:

Cannot convert value of type '[String : String]' to expected argument type 'Object'

我想在整个字典中动态更新多个字段,这可能吗?

1 个答案:

答案 0 :(得分:2)

我不认为教程是正确的,即使它来自Realm工程师编写的官方网站。如果你看一下RealmSwift的official documentation,你可以看到add函数的两个版本接受一个子类Object的参数。

您正在寻找并且应该在教程中提及的功能是public func create<T: Object>(_ type: T.Type, value: Any = [:], update: Bool = false) -> T,您可以使用它来更新Dictionary中的现有对象。

您的代码应如下所示:

var person = ["personID": "My-Primary-Key", "name": "Tom Anglade"]

// Update `person` if it already exists, add it if not.
let realm = try! Realm()
try! realm.write {
    realm.create(Person.self, value: person, update: true)
}