将 CoreData 存储在 iCloud 中

Store CoreData in iCloud

我目前正在创建一个将客户数据存储在 CoreData 数据库中的 macOs 应用程序。

现在我希望将这些数据存储在 iCloud 中。这个想法是每个用户在他的 iCloud 中都有自己的数据。如果他使用超过一台 Mac/iOS 设备,他可以访问他的数据。

所以我没有为所有客户集中存储数据,而是为每个客户单独存储数据。

我已经通读了一些关于 CloudKit 的主题,但总体上感到困惑:

谁能告诉我他在这方面的经验?

谢谢

CloudKit 相当广泛。它提供了三种类型的数据库:

  1. Public,可以分享给大家
  2. 私有,特定于一个 iCloud 帐户。
  3. 共享,这是某人的私人数据库,但您已获得访问权限。

这为您提供了很多选择,而您询问的情况(数据在单个 iCloud 用户的设备之间共享)非常适合私有数据库。换句话说,CloudKit 很适合你。

正如其他人已经指出的那样,CloudKit 为您提供了在设备之间移动数据所需的在线存储,但它并未为此提供完整的机制。这就是像 Ensembles 这样的框架的用武之地;它们建立在 CloudKit 和其他服务之上,以处理所有涉及保持两个设备及时分离和 space 同步的簿记。 (免责声明:我是 Ensembles 框架的开发者。)

您不必使用像 Ensembles 这样的框架;你可以直接与 CloudKit 沟通,但你不应该低估开发一个与 Core Data 完全同步的应用程序需要多少时间和技能。根据您的数据集,可能会有很多陷阱。集成和类似框架可以为您做很多事情:

  • 确保更改在每台设备上以相同的顺序回放
  • 处理两个不同设备上的并发更改
  • 删除旧数据和冗余数据
  • 通过提供批处理来保持低内存使用率,这在 iOS
  • 上非常重要

总之,你可以自己做,但我不推荐。如果你想要 Core Data 同步,我推荐 Ensembles,或者看看其他库,比如 Seam(我没有用过这个,但它似乎很受欢迎)。

如果您没有使用 Core Data,您可以查看像 Realm and Firebase 这样的选项,它可以有效地处理同步问题和客户端 API 一击。