从 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 提取特定更新的主要内容,如果未能解决你的问题,请参考以下文章

从PRISM开始学WPFMVVMViewModel?

在 python 中,为啥从数组读取比从列表读取慢?

从图库中挑选或从相机捕获的高质量图像

从PRISM开始学WPFMVVMCommand?

从PRISM开始学WPFPrism?

mysql 主-主-从-从