核心数据+ iCloud Sync NSPersistentStoreDidImportUbiquitousContentChangesNotification

时间:2016-04-08 11:05:27

标签: ios core-data icloud

我遇到了核心数据和iCloud同步的一些有线行为。我在应用程序中添加了iCloud文档和Cloudkit功能,并订阅了这三个通知:

NSPersistentStoreCoordinatorStoresWillChangeNotification
NSPersistentStoreCoordinatorStoresDidChangeNotification
NSPersistentStoreDidImportUbiquitousContentChangesNotification

我第一次运行应用时收到了这些通知:

Using local storage: 1
store will Change notification
store did Change notification
Using local storage: 0

但是,NSPersistentStoreDidImportUbiquitousContentChangesNotification没有被解雇,因为核心数据没有从我的iCloud帐户无处不在的容器中下载数据。

然而,当我退出应用程序并在启用飞行模式时重新启动它时,我的所有数据都立即加载。似乎第一次启动时数据已下载并保存到SQLite存储,但未通知通知,因此我的UI可以刷新。

以前有没有人经历过这种情况,在那种情况下你做了什么。

1 个答案:

答案 0 :(得分:0)

首次设置和“正常”同步操作之间存在差异。

首次设置时未发布NSPersistentStoreDidImportUbiquitousContentChangesNotification;只有在以后发生变化时。这会通知应用导入它们(通过调用mergeChangesFromContextDidSaveNotification(_:))。

Apple的iCloud Programming Guide for CoreData非常有助于了解在哪个阶段发生的事情。

请参阅iCloud Performs a One-Time SetupCore Data Posts Content Changes from iCloud上的章节。