从CloudKit获取初始数据

时间:2016-08-16 15:33:22

标签: core-data cloudkit

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

我想从CloudKit获取它。是的,我知道CloudKit不会被视为远程数据库,而是一个集线器。我很好。坦率地说,我认为这个用例是该策略中唯一的漏洞之一。

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

在某些方面,这类似于您在Android上使用服务所面临的挑战:假设我有天气预报服务。当我订阅它时,直到它创建下一个新的预测时我才会得到天气。为了解决这个问题的不足,Android Services SDK允许我制作“粘性”服务,我可以在订阅时获得服务产生的最后一条消息。

我正在考虑以通用的方式做类似的事情:可以用一个版本令牌保存一些对象图的快照,可能是JSON,然后是初始加载,只是能够获取那些并转向它们在本地进入CoreData对象图。

问题是这个策略是否有意义,或者我应该抓住我的鼻子,用嵌套查询写下厄运代码的金字塔? (不建议使用CoreData同步,因为已弃用。)

1 个答案:

答案 0 :(得分:1)

您的问题有点老了,所以您可能已经对此有所保留,但我认为我建议您选择一个选项。

您可以在CloudKit容器的公共数据库中创建名为Data的记录类型。在Data中,您可以有一个名为structure的字段,该字段为String(如果要附加JSON文件,则为CKAsset)。

然后,在每次加载应用程序时,您查询公共数据库并下拉包含类定义的structure字符串,然后按自己的喜好使用它。由于它在公共数据库中,因此所有用户都可以访问它。祝你好运!