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

问题描述

App允许单个用户输入字段并保存在他们的设备上

Name of hotel
Location of hotel
Type of Hotel

还有一些附加功能,例如,如果发现酒店服务的好坏,就可以了。

现在出现了我的问题,因为我希望某些信息(如酒店名称及其位置)对在“最喜欢的酒店”部分中安装该应用程序的所有用户可见

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

解决方法

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

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

CloudKit是一个持久性框架(工具!),可让您将数据远程保存在苹果的云中。由于它是远程保存的,因此它具有允许不同的设备和用户访问数据的功能。

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

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

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

,

核心数据完全不会自动在设备之间同步数据。为此,您需要将CloudKit与Core Data一起使用。核心数据可以在内部使用CloudKit来同步数据。有很多解释,所以我建议从Apple's documentation on the topic获取详细信息。目前仅支持iOS 14(仍处于beta版)中,用于在不同用户之间同步数据。苹果在a session at this year's developer conference中对此进行了介绍。