[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/