【发布时间】:2019-06-28 13:13:37
【问题描述】:
当我们用主键创建领域对象时:
class Dog: Object {
@objc dynamic var id: Int = 0
@objc dynamic var someValue: Int = 0
override static func primaryKey() -> String? { return "id" }
}
let realm = try! Realm()
realm.write {
let dog = realm.create(Dog.self, value:["id" : 1], update: .modified)
if dog.isNew { //need to check dog is newly created or an existing object.
dog.someValue = 0
} else {
dog.someValue += 1
}
}
我们如何检查上面的狗对象是新创建的还是更新的?
【问题讨论】:
-
这个问题有点含糊;如果你想更新一个对象,那么你会在尝试更新它之前知道它的 id。另外,我不相信
let dog = realm是有效的语法——它可能会抛出异常。如果您通过 true (已折旧),它将起作用。你能进一步解释一下这个用例吗? -
@Jay 它是一个有效的语法。
let dog = realm.create(Dog.self, value:["id" : 1], update: .modified)将创建一个新的 dog 对象,如果它不存在,否则将更新该对象(如果存在)。这里的用例是,如果它已经存在,我必须增加它的一个变量,否则只需将其设置为 0。我将更新问题以更清楚。 -
函数我很熟悉。更新到 Realm 3.17 并且工作正常,只需将
realm.write更改为try! realm.write
标签: ios swift realm realm-mobile-platform