swift – Realm.create会用同一个主键更新对象吗?
发布时间:2020-12-14 02:26:25 所属栏目:百科 来源:网络整理
导读:我只是好奇,如果我调用realm.create,它会从领域结果自动更新领域对象吗? // Assuming a "Book" with a primary key of `1` already exists.try! realm.write {realm.create(Book.self,value: ["id": 1,"price": 9000.0],update: true)// the book's `title`
|
我只是好奇,如果我调用realm.create,它会从领域结果自动更新领域对象吗?
// Assuming a "Book" with a primary key of `1` already exists.
try! realm.write {
realm.create(Book.self,value: ["id": 1,"price": 9000.0],update: true)
// the book's `title` property will remain unchanged.
}
目前看起来我需要再次从领域读取以获取最新的对象.如果我错了,请纠正我. 谢谢
是的,在调用Realm.create(_:value:update :)时指定update:true将导致更新现有对象.
这是基于您提供的代码的片段,演示了这一点: class Book: Object {
dynamic var id = ""
dynamic var title = ""
dynamic var price = 0.0
override class func primaryKey() -> String? { return "id" }
}
let realm = try! Realm()
let book = Book(value: ["1","To Kill a Mockingbird",9.99])
try! realm.write {
realm.add(book)
}
let results = realm.allObjects(ofType: Book.self)
try! realm.write {
realm.createObject(ofType: Book.self,populatedWith: ["id": "1","price": 7.99],update: true)
}
print(book)
print(results)
此代码生成以下输出: Book {
id = 1;
title = To Kill a Mockingbird;
price = 7.99;
}
Results<Book> (
[0] Book {
id = 1;
title = To Kill a Mockingbird;
price = 7.99;
}
)
如您所见,现有对象的price属性已更新为新值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
