CoreData and iCloud



我正在开发一个核心数据应用程序,并考虑添加iCloud支持,但在网上看了看后,我经常听到iCloud+CoreData不可靠,经常会崩溃。

这是真的吗?我正在阅读的一本关于核心数据主题的书提到,iCloud+CoreData在iOS 5中不可靠,但后来得到了修复,但我也听到了相反的说法,iCloud+CoreData在iOS 6中仍然不可靠。如果是这样,以自定义格式存储数据库会有帮助吗?

现在iOS 7已经发布了,我们可以谈谈它了。一切似乎都表明,在iOS 7中,iCloud核心数据同步已经修复。我将把iCloud Core Data同步功能添加到我正在开发的一款应用中(仅适用于iOS 7),所以我还不能从个人经验来判断,但我所听到的一切都表明,它现在很适合黄金时段。

我强烈推荐观看来自WWDC 2013的"Core Data和iCloud的新功能"会议视频:https://developer.apple.com/videos/wwdc/2013/?id=207(需要Apple Developer Program会员)。我已经看了两遍了,他们确实把很多变得更直接了。

最后,我建议你看看GitHub上的UbiquityStoreManager。这个库为你完成了iCloud Core Data中所有痛苦的部分。它已经被修改为考虑到iOS 7的重大改进,尽管如果你想利用它们,你的应用必须只有iOS 7(无论你是否使用这个库)。

更新:自从发布了这个答案,我现在可以从个人经验来看,可以确认iOS 7中的核心数据iCloud同步是坚不可磐石的,而且更重要的是,难以置信的容易实现。我将它添加到我的应用程序中,没有使用UbiquityStoreManager或任何其他第三方库,它非常简单。实际上只有几行代码。

EDIT:我用我的iCloud Core Data堆栈为iOS 7创建了一个GitHub repo。希望能有所帮助:https://github.com/mluisbrown/iCloudCoreDataStack

@mluisbrown提到的视频/链接(https://developer.apple.com/videos/wwdc/2013/?id=207)似乎不再可用

2021年有一个更新的版本:https://developer.apple.com/videos/play/wwdc2021/10015/

在macOS 10.15和iOS 13中,Apple引入了NSPersistentCloudKitContainer

一个容器,封装了应用程序中的核心数据堆栈,并将选择的持久存储镜像到CloudKit私有数据库。

链接:

Apple Documentation:使用CloudKit镜像核心数据存储

Apple示例代码:同步本地存储到云

最新更新