确定是否保存NSManagedObjectContext将导致对持久存储的更改

问题描述 投票:1回答:4

换句话说,是否有可能通过丢弃当前上下文来确定是否存在丢失的更改?现在,如果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,...

ios core-data nsmanagedobject nsmanagedobjectcontext
4个回答
2
投票

由于您只关心更改是否存在,而不是确切查找更改,因此,我将在hasPersistentChangedValues上使用NSManagedObject方法来过滤上下文的字段。例如,


2
投票

也许您可以使用committedValuesForKeys:来获取假定已更改的键的旧值并与新值进行比较。像这样的东西:


0
投票

此SO帖子解决了类似的问题:


0
投票

我最终在Swift中编写了以下方法:

© www.soinside.com 2019 - 2024. All rights reserved.