换句话说,是否有可能通过丢弃当前上下文来确定是否存在丢失的更改?现在,如果context.hasChanges == TRUE
,我的UI会指示有数据丢失的风险,但是我认为hasChanges
看起来很像这样:
- (BOOL) hasChanges {
return self.updatedObjects > 0 || self.insertedObjects.count > 0 || self.deletedObjects.count > 0;
}
...和updatedObjects
包含的对象仅是edited,即使属性未从其原始值更改。 updatedObjects
还包含具有瞬时变化的对象。保存这些对象不会修改持久性存储。
如果用户实际上未进行任何更改,我不想提示他们保存,那么确定持久性属性是否发生更改的最佳方法是什么?
换句话说,是否有可能通过丢弃当前上下文来确定是否存在丢失的更改?现在,如果context.hasChanges == TRUE,...
由于您只关心更改是否存在,而不是确切查找更改,因此,我将在hasPersistentChangedValues
上使用NSManagedObject
方法来过滤上下文的字段。例如,
也许您可以使用committedValuesForKeys:
来获取假定已更改的键的旧值并与新值进行比较。像这样的东西:
此SO帖子解决了类似的问题:
我最终在Swift中编写了以下方法: