iCloud - NSCoding 或核心数据

Posted

技术标签:

【中文标题】iCloud - NSCoding 或核心数据【英文标题】:iCloud - NSCoding or Core Data 【发布时间】:2015-10-14 08:44:39 【问题描述】:

我有一个使用 NSCoding 的应用程序,3 个类,不相关 - 因此使用简单的 NSCoding 方法来保存我的对象数组。

但是,现在是iCloud 的问题。据我了解Core Data 现在基本上可以与iCloud 一起使用。 Very easy to implement.

为了帮助您将托管对象持久保存到云端,集成了 iCloud 与核心数据。要在 iCloud 中使用 Core Data,你只需告诉 Core 用于创建支持 iCloud 的持久存储的数据。 iCloud 服务 其余的由 Core Data 处理

所以,问题是我是否应该将我的应用程序转换为使用Core Data,这给了我iCloud 基本上是默认的 - 或者设置iCloud 和我当前使用NSCoding 设置一样容易

ios 9 开发 Swift

谢谢

【问题讨论】:

“据我了解,Core Data 现在基本上可以开箱即用地与 iCloud 配合使用。” - 当然不。考虑到升级、用户打开或关闭 iCloud、数据完整性要求、备份、恢复等的时间相当复杂...... 一定有更好的方法......我尝试了 Parse 和本地商店。但这最终也成为了一场噩梦。也许 cloudKit .... 你不需要 Core Data 来使用 iCloud——你可以在不使用 Core Data 的情况下将文件保存在 iCloud 中。 @TomHarrington 我明白了,我只是想知道这样是否能让事情变得更容易。 不,那会让事情变得更加困难。除非您需要 iCloud 以外的 Core Data,否则不要仅仅为了获得 iCloud 支持而添加它。 【参考方案1】:

iCloud 支持可能现在可以很好地与 CoreData 配合使用。然而,它已经坏了很长时间,以至于我(和其他人)完全停止使用它。我浪费了太多时间试图让它工作,我拒绝再花一秒钟尝试再次使用它。

在编写了自己专有的 CoreData 同步解决方案后,我终于尝试了Ensembles,而且我再也没有回头。

但是,如果您的应用程序当前不需要 CoreData,为什么不使用标准的 iCloud 支持呢?它似乎适用于正常的文件同步,如果您只是将对象保存到文件中,这似乎是您所拥有的。

如果您的应用在没有它的情况下也可以正常工作,则无需添加 CoreData 的复杂性。

【讨论】:

我也遇到了同样的问题 - 我在 2 年前放弃了 iCloud - 一厢情愿地认为它会起作用。我认为这种方式过于网络密集,每次仅在一个对象中发生更改时都会保存我的整个对象图。 如果你想与 Core Data 同步,我是 Ensembles 的坚定信徒。我与他们没有任何关系,除了作为版本 2 的付费客户。版本 1 仍然作为开源免费提供,并且运行良好。 会去看看乔迪。谢谢 我使用 UIDocument 和 ICloud 进行了批量同步。然后问题开始了,即竞争条件。我检查了 Ensembles 并观看了介绍视频。如果我要使用它,请注明您的第 2 版并付费。奇怪的是,网上没有任何关于这项服务的新视频或教程。它如何与 Swift 一起玩?? 我还没有理由转向 Swift,所以我不知道。我可能是一头奇怪的牛,但我真的喜欢 ObjectiveC。但是,我认为它和所有其他 ObjectiveC API 对 Swift 的表现一样好,应该不会造成任何问题。随时询问开发人员。甚至在我给他钱之前,他对任何问题或疑问都非常敏感。

以上是关于iCloud - NSCoding 或核心数据的主要内容,如果未能解决你的问题,请参考以下文章

核心数据迁移到 iCloud

核心数据 - 通过 iCloud 保存和共享图像

如何在 Swift 的 NSCoding 初始化中返回预先存在的核心数据对象?

合并 iCloud 和核心数据数据库

核心数据 - iCloud 行为

核心数据+iCloud:iCloud Storage只增不减