[[NSManagedObject changedValuesForCurrentEvent]]返回旧值

时间:2013-02-12 11:41:05

标签: ios core-data nsmanagedobject

[NSManagedObject changedValuesForCurrentEvent]返回旧值。有人遇到过这个问题吗?

文档说:

  

返回一个字典,其中包含自上次发布NSManagedObjectContextObjectsDidChangeNotification以来已更改的持久属性的键和(新)值。

但实际上它会回归旧的价值观。

1 个答案:

答案 0 :(得分:0)

我在回复NSManagedObjectContextObjectsDidChangeNotification时看到了这一点。我不知道这是否与其他NSManagedObjectContext通知一致。作为解决方法,我使用键通过以下方式从托管对象本身获取新值:

NSDictionary *changedProperties = [managedObject changedValuesForCurrentEvent];
for(NSString *key in changedProperties) {
    NSObject *newValue = [managedObject performeSelector:NSSelectorFromString(key)];
}

另一方面:我发现(在某些情况下),您必须在使用[managedObjectContext refreshObj:managedObject mergeChanges:NO]进行保存操作之前取消对象的错误以获取当前/旧值。就我而言,我需要遍历已删除对象的关系。但即将被删除的对象关系已经被淘汰了。刷新对象解决了这个问题。

希望这有帮助。