gpt4 book ai didi

swift - 将 CoreData 存储在 iCloud 中

转载 作者:可可西里 更新时间:2023-11-01 00:56:15 26 4
gpt4 key购买 nike

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

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

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

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

  • CloudKit 为全局数据提供数据存储(例如我想存储客户的数据)
  • 是否可以将 CoreData 存储到每个客户的 iCloud 帐户中?
  • 如果可以,这可以通过 CloudKit 实现吗?还是我必须使用像 Ensembles 这样的第三方库? (这提到有一个 2016 年的线程说 Apple 驳回了通过 iCloud 使用 CoreData 的可能性,但现在只有像 Ensemble 这样的第 3 方库可以工作)

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

谢谢

最佳答案

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

  1. 公开,所有人都可以共享。
  2. 私有(private),特定于一个 iCloud 帐户。
  3. 共享,这是某人的私有(private)数据库,但您已获得访问权限。

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

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

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

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

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

如果您没有使用 Core Data,您可以查看类似 Realm 的选项和 Firebase ,一次有效地处理了同步问题和客户端 API。

关于swift - 将 CoreData 存储在 iCloud 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47457754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com