核心数据不从iCloud下载所有数据

时间:2015-04-13 13:33:22

标签: ios macos core-data sync icloud

我已经在我的一个项目中使用Core Data大约6个月了,一切正常,直到有一天用户报告她的iOS设备中的某些数据没有同步到她的Mac上

当我查看它时,似乎Mac没有导入某些NSManagedObjects,尽管它们似乎已被iOS设备上传到iCloud。

我设法通过在向持久性商店协调员添加启用iCloud的持久存储时,通过传递NSPersistentStoreRebuildFromUbiquitousContentOptions@YES来重建iCloud中的持久性存储来解决此问题。

我想知道这是否是一个已知问题,是否可以预防?不幸的是,我没有任何错误报告。

1 个答案:

答案 0 :(得分:1)

我有同样的问题并通过删除persistentStore并在应用程序运行时再次添加它来解决它。 在第一个设备中进行多次更改时始终存在同样的问题,第二个设备未获得所有更改。 当 applicationDidBecomeActive 首先删除持久性存储时,我使用以下代码:

var storeCoordinator:NSPersistentStoreCoordinator = persistentStoreCoordinator!
        var store:NSPersistentStore = storeCoordinator.persistentStores[0] as! NSPersistentStore
        var storeURL:NSURL = store.URL!
        storeCoordinator.removePersistentStore(store, error: nil)
        NSFileManager.defaultManager().removeItemAtPath(storeURL.path!, error: nil)

接下来我再次添加persistentStore。然后我收到了所有通知,因为它是安装后的第一次运行,但同步完整数据。它总是有效,但我不知道这是否是处理问题的正确方法。

我相信第一个设备中所做的所有更改总是会到达第二个设备,但由于一些奇怪的原因,它们不会完全与本地核心数据合并。 我对iCloud-CoreData问题做了一些奇怪的观察: https://stackoverflow.com/questions/32084952/core-data-to-icloud-doesnt-sync-all-changes][1]

我希望它有所帮助。