我已经在我的一个项目中使用Core Data大约6个月了,一切正常,直到有一天用户报告她的iOS设备中的某些数据没有同步到她的Mac上
当我查看它时,似乎Mac没有导入某些NSManagedObjects
,尽管它们似乎已被iOS设备上传到iCloud。
我设法通过在向持久性商店协调员添加启用iCloud的持久存储时,通过传递NSPersistentStoreRebuildFromUbiquitousContentOptions
值@YES
来重建iCloud中的持久性存储来解决此问题。
我想知道这是否是一个已知问题,是否可以预防?不幸的是,我没有任何错误报告。
答案 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]
我希望它有所帮助。