从 NSPersistentStoreCoordinator 提取特定更新
Posted
技术标签:
【中文标题】从 NSPersistentStoreCoordinator 提取特定更新【英文标题】:Extract specific update from NSPersistentStoreCoordinator 【发布时间】:2014-07-11 20:37:59 【问题描述】:我目前正在使用 iCloud 和 CoreData 在我的应用程序之间同步数据,因此每次触发通知时,我都会更新我的本地数据数组。我遇到的问题是我的数据集越来越大,我不想每次有新通知时都更新整个数据集。
基本上,我有一个名为 Photo 的实体,每次用户对设备 A 上的一个 Photo 对象进行更新时,它都会与 iCloud 同步,然后将其推送到设备 B。设备通过以下方式接收通知:
persistentStoreDidImportUbiquitousContentChanges:
看起来像这样:
notification.userInfo.description: 已删除 = "(\n)"; 插入 = "(\n 0x17045c80 56E70CB19352/照片/p8431>\n)"; 更新 = "(\n)";
我想获取特定的插入、更新或删除并将其应用到我的本地数组,而不是遍历整个 fetchedObjects 集。
我尝试将插入对象转换为 Photo 对象,但没有成功。有关如何提取该信息的任何想法?
谢谢!
【问题讨论】:
【参考方案1】:该通知中的对象是NSManagedObjectID
的实例。您可以将它们与您的NSManagedObjectContext
一起使用来检索托管对象。使用existingObjectWithID:error:
(安全,可能很慢)或objectWithID:
(快速,可能不太安全)。
不过,您可能不需要这样做。您可以接收该通知并将其传递给 mergeChangesFromContextDidSaveNotification:
以合并其中包含的任何更改。如果需要手动合并,可以,但通常不需要。
【讨论】:
谢谢!我仍然让 ios 为我做合并,我只需要为我正在做的一些本地索引获取一些特定的数据,并且你建议使用 existingObjectWithID:error: 效果很好!以上是关于从 NSPersistentStoreCoordinator 提取特定更新的主要内容,如果未能解决你的问题,请参考以下文章