我有2个班级:
class RealmUser: Object {
@objc dynamic var id: String = ""
@objc dynamic var age: Int? = nil
@objc dynamic var name: String? = nil
}
和
class Event: Object {
@objc dynamic var id: String = ""
@objc dynamic var name: String = ""
let participants = List<RealmUser>()
}
让&#39;说我目前在DB中有
现在,当我从API收到一个包含最小用户代表的事件时,例如:
{
event_id: 10,
name: "Super Event",
participants: [
{
user_id: 1,
name: "Foo"
},
{
user_id: 2,
name: "New Bar"
},
]
}
因此没有age
,Realm将覆盖现有用户而不是合并数据。
我最终在数据库中的期望是更新完整的用户对象。
相反,变量age
已重置为零,好像它没有被更新但是被覆盖。
我正在调用函数realm.add(parsedEvents, update: true)
答案 0 :(得分:1)
Realm无法神奇地确定当您添加具有nil
字段的对象时,您希望它忽略该字段而不是将其设置为nil
。
一种解决方案是使用realm.create(parsedEvents, update: true)
并传递一个字典,该字典缺少您不想更新的密钥而不是传递给对象。