我正在开发一个核心数据应用程序,并且正考虑添加iCloud支持,但在网上浏览后,我经常听说iCloud + CoreData不可靠并且经常会破坏。
这是真的吗?我正在阅读一本关于核心数据主题的书,提到iCloud + CoreData在iOS 5中不可靠,但后来已经修复,但我也听到了相反的情况,iCloud + CoreData在iOS 6中仍然不可靠。如果是这样的话自定义格式的数据库有帮助吗?
非常感谢任何帮助。
答案 0 :(得分:57)
现在iOS 7已经发布,我们可以谈谈它。一切似乎都表明在iOS 7中,iCloud核心数据同步已得到修复。我准备将iCloud核心数据同步添加到我正在构建的(仅限iOS 7)应用程序中,所以我还不能从个人经验中说出来,但我听到的一切表明它现在对黄金时段有好处。 / p>
我强烈建议您观看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 Sync是坚如磐石的,还有更多,令人难以置信的易于实施。我在不使用UbiquityStoreManager或任何其他第三方库的情况下将其添加到我的应用中,这非常简单。字面上只有几行代码。
编辑:我使用适用于iOS 7的iCloud核心数据堆栈创建了一个GitHub仓库。希望它有所帮助: https://github.com/mluisbrown/iCloudCoreDataStack
答案 1 :(得分:10)
视频的链接已更改:https://developer.apple.com/videos/wwdc/2013/?id=207
修改:这应该是对最后一个答案的评论,但我不具备所需的50+声誉:(
答案 2 :(得分:2)
在macOS 10.15和iOS 13中,Apple引入了NSPersistentCloudKitContainer
一个容器,该容器将您的应用程序中的核心数据堆栈封装起来,并将选择的持久存储镜像到CloudKit私有数据库。
链接:
Apple Documentation: Mirroring a Core Data Store with CloudKit
答案 3 :(得分:1)
我在https://github.com/hyouuu/iCloudCoreData-Swift
获得了基于@ mluisbrown的iCloudCoreDataStack的Swift版本,以及一些Xcode生成的代码和Apple技术支持我可能犯了明显的错误 - 请帮助它变得更好!