coredata 可以允许某些字段在应用程序的用户之间共享吗?

Posted

技术标签:

【中文标题】coredata 可以允许某些字段在应用程序的用户之间共享吗?【英文标题】:Can coredata allow certain fields to be shared across users of app? 【发布时间】:2020-08-18 17:47:09 【问题描述】:

应用程序允许个人用户输入字段并保存在他们的设备上

Name of hotel
Location of hotel
Type of Hotel

还有一些附加功能,例如,如果他们发现酒店服务好坏。

现在我的问题出现了,因为我希望在最喜欢的酒店部分安装应用程序的所有用户都可以看到某些信息,例如酒店名称及其位置

核心数据中是否有任何选项允许我这样做,或者我需要在 cloudkit 上工作,问题是,如果我在 cloudkit 上工作,这是否会使 coredata 不再适用于项目?

【问题讨论】:

【参考方案1】:

首先,让我们澄清一下 CoreData 和 CloudKit 之间的关系,因为这对您的问题和答案很重要。

CoreData 是一个持久性框架(工具!),可让您在设备上本地保存数据。 CoreData,不是为了共享数据。它旨在供用户保存数据,并具有 Apple 为隐私设计的所有安全性。

CloudKit 是一个持久性框架(工具!),可让您将数据远程保存在 Apple 的云中。因为它是远程保存的,所以它能够允许不同的设备和用户访问数据。

CoreData 可以在 Xcode 中使用 CloudKit 自动设置,允许用户将数据保存到本地设备存储,并自动备份到云端。这允许用户在一台设备上保存数据,如果他们在另一台设备上使用该应用程序,则可以访问保存的数据。

但是,CoreData 与 CloudKit 一起使用时,至少在您想要自动同步时,实现了一个在 ios14 之前不可共享的特殊“区域”。这很好,但实际上,您需要清楚地概述私有数据库中有哪些数据,以及您想要共享的内容。您需要在应用中解决其他注意事项和复杂问题,例如配置用于编辑的控件,这样您就不会让用户尝试编辑他们无权访问的内容。

您的问题听起来像是您只想与其他人共享用户存储的部分数据。此外,这些共享数据听起来像是许多用户数据(如评分)的聚合。在这种情况下,最好使用一些后端程序处理该数据并将其作为单独的 CloudKit 共享提供。理由是,您不希望用户下载成百上千、数万条用户评论,并为每个需要它的人每次都进行处理。

【讨论】:

【参考方案2】:

Core Data 根本不会在设备之间自动同步数据。为此,您需要将 CloudKit 与 Core Data 一起使用。 Core Data 可以在内部使用 CloudKit 来同步数据。有很多东西要解释,所以我建议从Apple's documentation on the topic 获取详细信息。目前仅 iOS 14 支持使用此功能在不同用户之间同步数据(仍处于测试阶段)。 Apple 在a session at this year's developer conference 中对此进行了报道。

【讨论】:

感谢链接,cloudkit 可以做到吗,就像单独没有 coredata 一样?

以上是关于coredata 可以允许某些字段在应用程序的用户之间共享吗?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据:如何从警报中更新 TableView 字段?

CoreData如何实现托管对象的“计算”属性字段

Swift/iOS8:只允许某些键盘

在 CoreData 中创建实例

某些用户的 NoSQL 建模字段可见性

ios coredata 表模式同步