【问题标题】:Do I need to worry about different contexts in NSNotification Observers我是否需要担心 NSNotification Observers 中的不同上下文
【发布时间】:2015-03-17 20:59:10
【问题描述】:

我有一个类正在观察何时创建新对象“产品”,以便它可以更新“用户”对象中的详细信息。

当我保存我的 Product 对象时,我会在后台线程上的一个方法中执行此操作,该方法会发出已创建新对象的通知。我在通知的 userInfo 中设置了对象。

观察者在通知发布时触发。我需要保存一些数据,所以我创建了一个新的保存块,它又创建了一个新的 NSManagedObjectContext。我假设我必须在这个新的上下文中获取对象。

不幸的是,当我尝试从新上下文中获取记录时,它返回一个包含空详细信息的对象。但是,来自通知的 userInfo 的对象已完全填充。

我是否正确假设我需要重新获取记录?重新获取的记录是否为空,可能是因为保存尚未完成?

【问题讨论】:

  • 你能显示你用于获取的代码吗?

标签: ios objective-c observer-pattern


【解决方案1】:

我们说的通知是saveContext完成时生成的CoreData? (NSManagedObjectContextDidSaveNotification)。

在这种情况下,当您收到通知时,您必须手动将上下文与

dispatch_sync(dispatch_get_main_queue(), ^{
  [_managedObjectContext mergeChangesFromContextDidSaveNotification:notification];

});

因此,在 Product 实体中保存了更改的上下文会将他的更改合并到其他上下文中。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多