【问题标题】:[[NSManagedObject changedValuesForCurrentEvent]] return old values[[NSManagedObject changedValuesForCurrentEvent]] 返回旧值
【发布时间】:2013-02-12 11:41:05
【问题描述】:

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

文档说:

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

但实际上它返回旧值。

【问题讨论】:

    标签: ios core-data nsmanagedobject


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多