Core data 从CloudKit获取初始数据

Core data 从CloudKit获取初始数据,core-data,cloudkit,Core Data,Cloudkit,下面是一个常见的场景:应用程序是第一次安装的,需要一些初始数据。你可以将其捆绑在应用程序中,并从plist或其他文件或CSV文件加载。或者你可以去远程商店买 我想从CloudKit那里得到它。是的,我知道CloudKit不应被视为一个远程数据库,而是一个中心。我同意。坦率地说,我认为这个用例是该策略中唯一的漏洞之一 假设我有一个我需要得到的对象图,它的基础是一个类,然后是3或4个相关的类。我希望新用户安装该应用程序,然后获取该类的最新版本。如果我使用CloudKit,我必须用单独的获取加载每个实

下面是一个常见的场景:应用程序是第一次安装的,需要一些初始数据。你可以将其捆绑在应用程序中,并从plist或其他文件或CSV文件加载。或者你可以去远程商店买

我想从CloudKit那里得到它。是的,我知道CloudKit不应被视为一个远程数据库,而是一个中心。我同意。坦率地说,我认为这个用例是该策略中唯一的漏洞之一

假设我有一个我需要得到的对象图,它的基础是一个类,然后是3或4个相关的类。我希望新用户安装该应用程序,然后获取该类的最新版本。如果我使用CloudKit,我必须用单独的获取加载每个实体并组装整个实体。这是丑陋的,不是一般的。一旦我这样做,我将进入变更跟踪模式。侦听更新并同步本地副本

在某些方面,这类似于在Android上使用服务所面临的挑战:假设我有一个天气预报服务。当我订阅它的时候,我要等到明天,当它创建下一个新的天气预报时才能得到天气。为了解决这一缺陷,Android服务SDK允许我创建“粘性”服务,在这里我可以获得服务在订阅时生成的最后一条消息

我正在考虑以一种通用的方式做一些类似的事情:用一个版本标记保存一些对象图(可能是JSON)的快照,然后进行初始加载,只是能够获取这些快照并在本地将其转换为CoreData对象图


问题是这个策略有意义吗?还是我应该屏住呼吸,用嵌套查询编写命运金字塔代码?(不要建议使用CoreData同步,因为这已经被弃用了。)

你的问题有点老了,所以你可能已经离开了这个问题,但我想我会建议一个选项

您可以在CloudKit容器中的Public数据库中创建名为
Data
的记录类型。在
数据
中,可以有一个名为
结构
的字段,该字段是
字符串
(如果要附加JSON文件,可以是
CKAsset


然后在每次加载应用程序时,查询公共数据库,并下拉包含类定义的
结构
字符串,然后根据需要使用它。因为它在公共数据库中,所以您的所有用户都可以访问它。祝你好运

有趣的想法,不知道你为什么认为这个问题很奇怪;数据库体系结构的启动状态以前已被多次询问。有趣的是,CloudKit附带了很多有用的工具,但目前还没有涵盖这一部分。我说的是“旧的”而不是“奇怪的”。:)啊,这就解释了:)。