【问题标题】:Core Data not downloading all data from iCloudCore Data 未从 iCloud 下载所有数据
【发布时间】:2015-06-18 20:11:58
【问题描述】:

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

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

我设法解决了这个问题,方法是从 iCloud 重建持久性存储,在将启用 iCloud 的持久性存储添加到持久性存储协调器时传递 NSPersistentStoreRebuildFromUbiquitousContentOptions 的值为 @YES

我想知道这是否是一个已知问题以及是否可以预防?很遗憾,我没有任何错误报告。

【问题讨论】:

  • 有什么解决办法吗?我在两个 iOS 设备之间看到了类似的行为。有些数据根本无法通过 iCloud 传送到其他设备。没有错误,非常成功或错过。这两个设备的同步率约为 95%,但都没有真实的表示。如果我从一台设备上删除该应用程序,然后重新安装它,那么它将从 iCloud 中提取整个商店。非常令人沮丧。
  • 很遗憾没有。我认为这只是一个 CoreData 错误。这是一个很棒的工具,但它也有它的缺点。希望 Apple 在今年晚些时候推出新的 OS X 和 iOS 时解决这个问题。

标签: ios macos core-data sync icloud


【解决方案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]

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2012-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多