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

Docs说:

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

但实际上,它会返回旧值。

最佳答案

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

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

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

希望这可以帮助。

关于ios - [[NSManagedObjectchangedValuesForCurrentEvent]]返回旧值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14831723/

10-10 20:42