刷新 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对应的管理对象
现在你知道哪些对象需要刷新了。
我正在为 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对应的管理对象
现在你知道哪些对象需要刷新了。