核心数据和iCloud

27

我正在开发一个核心数据应用程序,并考虑添加iCloud支持,但在网上搜索后,我经常听到iCloud + CoreData不可靠,并且经常会出现问题。

这是真的吗?我正在阅读有关核心数据的书籍中提到,iCloud + CoreData 在 iOS 5 中不可靠,但已经得到修复,然而我也听说相反的说法,即iCloud + CoreData 在iOS 6中仍然不可靠。如果是这样,将数据库存储在自定义格式中是否有所帮助?


1
很多开发者在iOS 6中仍然遇到Core Data iCloud同步的问题:请参考这篇文章获取最新的观点。在iOS 7中可能已经有所改善:由于仍处于NDA保密协议下,因此没有人分享他们的经验。 - Amy Worrall
@Amy,让我困惑的是有些人说它可以工作,而有些人则说不行。如果iCloud+CoreData存在结构问题,那么它们的影响肯定是普遍的。顺便提一下,链接的文章提到了TICoreDataSync框架,你有使用过吗? - john smith
我刚刚发布了一个示例iOS库样式的Core Data应用程序,其中包括iCloud集成。该应用程序包括一个设置捆绑包,供用户切换“使用iCloud”首选项设置,并根据用户设置将存储迁移到和从iCloud中。从下面的链接下载-对于文档表示抱歉-但它的工作方式与UIManagedDocument示例基本相同。http://ossh.com.au/design-and-technology/software-development/ - Duncan Groenewald
3个回答

58
现在 iOS 7 已经发布了,我们可以谈论它。一切似乎表明,在 iOS 7 中,iCloud Core Data 同步已经修复。我即将添加 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 中的 Core Data iCloud 同步非常可靠,而且更重要的是,实现起来非常容易。我将其添加到我的应用程序中,而没有使用UbiquityStoreManager或任何其他第三方库,它非常简单。只需几行代码。
编辑:我创建了一个 GitHub 存储库,其中包含我为 iOS 7 中的 iCloud Core Data 堆栈创建的代码。希望对您有所帮助:https://github.com/mluisbrown/iCloudCoreDataStack

@mluisbrown 很快就可以运行了。非常感谢! 主要思想很容易实现,但重装后为什么外部存储需要这么长时间才能启动呢?有没有办法解决这个问题? - AlexanderN
1
@AlexanderLongbeach 我不确定,但我认为这只是访问iCloud服务器所需的时间。据我所知,你无法做任何事情。我注意到在模拟器上,你几乎必须手动强制同步(⇧⌘I),否则它将需要很长时间。在设备上没有问题。 - mluisbrown
1
谢谢 :) 太棒了!继续更新这个 GitHub 仓库吧。喜欢它。 - real 19
1
最终,核心数据和iCloud成功合作了!GIT的工作太棒了,是整个网络上最好的答案 :-) - DogCoffee
1
事情并不像答案所暗示的那样美好。自从iCloud + Core Data堆栈被引入以来,我们一直在使用它,并且经历了苹果内部所有的迭代以改进这个堆栈。虽然目前的堆栈比旧的堆栈要好得多,但我们仍然发现在过去几周的测试中出现了无法修复的问题(基本上是最糟糕的情况:用户数据丢失)。 - Rafael Bugajewski
显示剩余21条评论

10

1
谢谢。我已经更新了答案中的链接,并点赞了你的回答,帮助你达到50+声望 :) - mluisbrown

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接