在RealmCollectionChange中计算没有实际更改的更新的Realm对象

时间:2016-11-02 17:32:22

标签: ios swift realm

如果Realm中包含Object Realm.add(_:update:)update设置为true,则其索引将包含在结果RealmCollectionChange中,即使它的所有属性都没有改变。

就我而言,我正在解析JSON,然后将其转换为我的特定Object。其中一些将被改变,一些不会,一些将是全新的。因此,当我realm.add(possiblyNewOrUpdatedObjects, update: true)时,其值完全没有变化的对象包含在modifications索引数组中。

我对这种行为缺少什么?为什么未修改的Object被视为已修改?

2 个答案:

答案 0 :(得分:2)

目前,这是公认的功能。如果您在Object上设置了某个属性,即使它与之前的值相同,也会将其视为更改修改。

an issue on the Realm Cocoa repo讨论此功能,是否应将其视为需要修复的错误。 Realm的问题优先级取决于有多少用户询问,所以请为此问题添加支持。 :)

答案 1 :(得分:0)

使用Realm.add(_:update:)时,Realm会尝试验证对象是否已受管理,并确保您添加的对象由同一Realm管理。然后它会在填充所有属性之前尝试获取或创建行(获取或创建对象)。

基本上Realm不知道您尝试更新的每个属性的值是多少。 Realm只将它们视为新对象。