从NSPersistentStoreCoordinator中提取特定更新

时间:2014-07-11 20:38:00

标签: ios core-data icloud

我目前正在使用iCloud和CoreData在我的应用中同步数据,因此每次通知触发时,我都会更新本地数据数据。我遇到的问题是我的数据集越来越大,每次有新的通知时我都不想更新整个数据集。

基本上,我有一个名为Photo的实体,每当用户对设备A上的一个Photo对象进行更新时,它就会与iCloud同步,然后iCloud被推送到设备B.设备通过以下方式接收通知:< / p>

persistentStoreDidImportUbiquitousContentChanges:

看起来像这样:

  

notification.userInfo.description:   {      删除=&#34; {(\ n)}&#34 ;;      inserted =&#34; {(\ n \ n0x17045c80 56E70CB19352 / Photo / p8431&gt; \ n)}&#34 ;;      updated =&#34; {(\ n)}&#34 ;;   }

我想抓住特定的插入,更新或删除,并将其应用到我的本地数组,而不是遍历整个fetchedObjects集。

我尝试将插入对象强制转换为Photo对象,但这并不起作用。有关如何提取该信息的任何想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

该通知中的对象是NSManagedObjectID的实例。您可以使用NSManagedObjectContext的那些来检索托管对象。使用existingObjectWithID:error:(安全,可能很慢)或objectWithID:(快速,可能不太安全)。

但是,你可能不需要这样做。您可以接收该通知并将其传递给mergeChangesFromContextDidSaveNotification:以合并其包含的任何更改。如果你需要手动合并,你可以,但通常不需要。