刷新 NSManagedObjectContext

Refresh NSManagedObjectContext

我正在为 iPhone 应用程序编写 WatchKit 扩展。我使用应用组共享核心数据。这是有效的,数据是共享的。当使用 watch 创建新的 NSManagedObject 时,我会向 iPhone 应用程序发送通知,告知已创建新对象。为此,我使用 MMWormhole。 iPhone 应用收到 MMWormhole 通知,现在我必须执行最后一步 - 刷新 NSManagedObjectContext。我该怎么做?

我试图在 MMWormhole 通知中转发 NSManagedObjectContextDidSaveNotification 通知并在 iPhone 应用程序中使用 mergeChangesFromContextDidSaveNotification,但它不起作用 MMWormhole 序列化通知,NSManagedObject 不支持。

简单的方法就是让应用程序重新加载其数据。重新执行任何提取,以便从持久存储中获取最新数据。

如果你想让它更复杂,做这样的事情:

在手表扩展中,对于每个 new/changed/deleted 对象,

  • 调用objectID获得NSManagedObjectID
  • 将对象 ID 转换为字符串 URIRepresentation
  • MMWormhole 消息中传递这些字符串

在应用程序中,当收到消息时,

  • 使用 [NSPersistentStoreCoordinator managedObjectIDForURIRepresentation:] 将字符串转换回 NSManagedObjectID
  • 使用[NSManagedObjectContext existingObjectWithID:]获取对象ID对应的管理对象

现在你知道哪些对象需要刷新了。