即使没有,RealmCollectionChange也会报告修改

时间:2016-07-17 03:30:38

标签: ios swift realm

这是我的设置:

在每个UIViewController viewWillAppear方法上,我从服务器获取数据。数据被解析为领域对象,后来添加到Realm DB。我已设置通知块以报告结果是否发生任何更改。现在,问题是即使获取的对象与已写入DB的对象相同,RealmCollectionChange仍会报告所有对象都被修改。这是一个示例代码:

获取/解析:

realmDB.beginWrite()

for projectJSON in projectsArray {
   let project = createObjectFromJson(projectJSON)
   realmDB.add(project, update: true)
}

realmDB.commitWrite()

更改观察员:

notificationToken = projects.addNotificationBlock { changes in
switch changes {
case .Update(_, let deletions, let insertions, let modifications):
    ...
}

所以在这里,修改总是返回完整的索引列表,就好像所有对象都已更新一样。

这是预期的吗?有什么方法可以避免这种行为?似乎add:update强制更新,而不是在对象相同的情况下跳过更新。

1 个答案:

答案 0 :(得分:2)

在createObjectFromJson方法中,几乎可以肯定设置对象属性,无论它们是否已更改。不幸的是,即使值相同,设置属性也会被检测为修改。我不确定这是否是预期的行为,但解决这个问题的一种方法是仅在新值不等于旧值时设置属性,尽管这可能会变得很难看。