【发布时间】:2017-11-23 14:27:31
【问题描述】:
我目前正在创建一个将客户数据存储在 CoreData 数据库中的 macOS 应用程序。
现在我希望将这些数据存储在 iCloud 中。这个想法是每个用户在他的 iCloud 中都有自己的数据。如果他使用不止一台 Mac/iOS 设备,他可以访问他的数据。
所以我不是为所有客户集中数据存储,而是为每个客户单独存储数据。
我已经阅读了一些有关 CloudKit 的主题,但总体上对此感到困惑:
- CloudKit 为全局数据提供数据存储(例如我要存储客户的数据)
- 是否有可能将 CoreData 记录到每个客户的 iCloud 帐户?
- 如果是这样,CloudKit 是否可以做到这一点,还是我必须使用像 Ensembles 这样的第三方库? (这提到 2016 年的一个帖子说 Apple 拒绝了通过 iCloud 使用 CoreData 的可能性,但现在只有像 Ensemble 这样的第 3 方库可以工作)
有人可以告诉我他在这方面的经验吗?
谢谢
【问题讨论】:
-
数据库将被用户的iTunes账户隔离在iCloud中,因此只存储用户相关数据是理想的,不同的iCloud用户之间没有直接的网关共享数据;如果这符合您的概念,那么您真正必须担心的唯一一件事就是您打算如何解决 CoreData 中的冲突;剩下的就是茶杯中的风暴。
-
@holex 这正是我想要的。特定 iTunes/iCloud 帐户的用户只能看到他们的数据。那么这可以通过使用 CloudKit 来实现吗?或者您是否建议基于合奏之类的解决方案?
-
在这种情况下,您最大的挑战是仅在 CoreData 中建立解决 冲突 的策略,因为之后您只需将数据库保存到应用程序的 iCloud 容器中即可否则将由 iOS 在后台管理。我不建议为此使用任何 3rd 方的东西——仅仅因为你不需要它,它会增加复杂性(恕我直言)。
标签: swift core-data icloud cloudkit ensembles