3

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

我试图转发NSManagedObjectContextDidSaveNotification内部MMWormhole通知的通知并mergeChangesFromContextDidSaveNotification在 iPhone 应用程序中使用,但它不能作为MMWormhole序列化通知工作并且NSManagedObject不支持它。

4

1 回答 1

3

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

如果您想让它更复杂,请执行以下操作:

在监视扩展中,对于每个新的/更改的/删除的对象,

  • 打电话objectID获取NSManagedObjectID
  • 将对象 ID 转换为字符串URIRepresentation
  • MMWormhole消息中传递这些字符串

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

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

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

于 2015-04-10T16:24:57.713 回答