Область.будет ли он обновлять объект с тем же первичным ключом?
Мне просто любопытно, если я позвоню realm.create
, будет ли это автоматическое обновление realm object from the realm results
?
// 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, чтобы получить последний объект. Делать поправьте меня, если я ошибаюсь.
Спасибо
1 ответ:
Да, указание
update: true
при вызовеRealm.create(_:value:update:)
приведет к обновлению существующего объекта.Вот фрагмент, основанный на предоставленном вами коде, который демонстрирует это:
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
существующих объектов обновилось до нового значения.