Я не верю, что у функции create есть прямой способ указать, был ли объект создан или изменен.Это отличный запрос на функцию;Было бы удобно узнать, был ли объект создан или существует в вызове realm.create.
При этом, это решение вопроса, которое проверит и укажет, создан ли объект или изменен.
При первом запуске кода он создаст объект с первичным ключом 0 и выведет его на консоль.Повторный запуск приведет к увеличению свойства someValue этого объекта и выведет обновленные объекты someValue.
Код проверяет, существует ли объект с данным первичным ключом;если нет, то создайте новый объект со значением по умолчанию для someValue.Если да, то увеличьте someValue и обновите объект.
let realm = try! Realm()
let primaryKey = 0
guard let dog = realm.object(ofType: Dog.self, forPrimaryKey: primaryKey) else {
try! realm.write {
let newDog = realm.create(dog.self, value:["id" : primaryKey, "someValue" : 0], update: .modified)
print("new dog created: \(newDog)")
}
return
}
try! realm.write {
dog.someValue += 1
realm.add(dog, update: .modified)
print("existing object updated \(dog)")
}