我目前正在使用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对象,但这并不起作用。有关如何提取该信息的任何想法吗?
谢谢!
答案 0 :(得分:2)
该通知中的对象是NSManagedObjectID
的实例。您可以使用NSManagedObjectContext
的那些来检索托管对象。使用existingObjectWithID:error:
(安全,可能很慢)或objectWithID:
(快速,可能不太安全)。
mergeChangesFromContextDidSaveNotification:
以合并其包含的任何更改。如果你需要手动合并,你可以,但通常不需要。