如何在商店位置相同时处理NSPersistentStoreCoordinatorStoresWillChangeNotification

时间:2015-01-29 17:58:04

标签: ios core-data icloud nspersistentstore

我使用Core Data + iCloud并获得了不少NSPersistentStoreCoordinatorStoresWillChangeNotifications,其中旧商店和新商店的网址相同。我只使用一台设备,在运行我的应用时会发生几次。

如果商店网址没有更改,为什么它会提供这些通知,而设备是唯一一个持久存储数据的商店?当旧网址和新网址相同时,是否可以忽略这些通知?

以下是通知的userInfo字典的内容:

NSConcreteNotification 0x17a5f6b0 {name = NSPersistentStoreCoordinatorStoresWillChangeNotification; object = <NSPersistentStoreCoordinator: 0x167e05c0>; userInfo = {
NSPersistentStoreUbiquitousTransitionTypeKey = 4;
added =     (
    "<NSSQLCore: 0x1787bcf0> (URL: file:///var/mobile/Containers/Data/Application/8D9D2E83-DCD6-427B-BF5B-371D6DFD1999/Documents/CoreDataUbiquitySupport/mobile~38BB3D02-34D8-4E44-BCBE-B3ACC4FFA2DC/QatQiGameData3/8FD336B2-35D5-4D5F-8B06-415C7CA523CB/store/qatqi.sqlite)"
);
removed =     (
    "<NSSQLCore: 0x1787bcf0> (URL: file:///var/mobile/Containers/Data/Application/8D9D2E83-DCD6-427B-BF5B-371D6DFD1999/Documents/CoreDataUbiquitySupport/mobile~38BB3D02-34D8-4E44-BCBE-B3ACC4FFA2DC/QatQiGameData3/8FD336B2-35D5-4D5F-8B06-415C7CA523CB/store/qatqi.sqlite)"
);

}}

1 个答案:

答案 0 :(得分:1)

号码&#39; 4&#39;对应于&#34; NSPersistentStoreUbiquitousTransitionType.InitialImportCompleted&#34;。 Apple的文档说明:

  

此值表示Core Data集成已完成构建与iCloud帐户内容一致的商店文件,并准备用该文件替换后备商店。

后备商店和无处不在(iCloud)商店确实拥有相同的网址,因此网址不会更改。如果显示的数据在导入时正确更新,则可以忽略这些通知。否则,您可能希望更新正在显示的数据。