问题:我在AFNetworking库中使用Realm。为了保持清洁,我正在使用自定义序列化程序解析传入的json响应并将它们映射到对象。返回的对象比保存,更新或在某些情况下转发。问题是某些关系被覆盖,我需要执行一种部分更新。
在领域中有没有办法复制持久化对象并将其值添加到非持久化对象中,仅使用响应值进行更新?
示例:
当前状态:
cat{
name: "kitty"
owners: ["peter"]
}
传入回复:
cat{
name:"pussy"
owner:[]
}
通缉结果:
cat{
name:"pussy"
owner:["peter"]
}
答案 0 :(得分:2)
我们刚刚更新了that section of the Realm documentation以澄清这种行为。
不幸的是,因为'nil'也是Realm对象的每个可选属性的有效值,所以Realm不可能智能地区分何时应该忽略提供的空值,或者应该用于清空它正指向的财产。
最简单的方法是使用您收到的JSON来构建仅包含您要更新的值的NSDictionary
,然后通过+[RLMObject createOrUpdateInRealm:withValue:]
将其传递给Realm更新您提供的该对象的属性。
如果您想使用该对象的RLMObject
副本更新对象,则需要确保该副本包含您要保留的所有属性。