如何同步核心数据和CloudKit之间记录有效

问题描述:

目前,我正在学习如何使用CloudKit框架和缺乏文档或例子来说明如何同步核心数据和CloudKit。如何同步核心数据和CloudKit之间记录有效

我曾经看过献给CloudKit所有WWDC视频(2014年,2015年,2016),但他们没有告诉我们如何实现与核心数据同步。我找不到任何新的示例,教程或书籍,显示如何实施此同步。

我知道使用CloudKit(不是Convenience API)的Operations API是有效的,并且可以在专门用于CloudKit的新WWDC 2016视频中说明更改,但CoreData映射是一个真正的问题。

例如,假设我想创建一个类似于票据应用的应用程序。在离线状态下,用户可以创建自己的笔记并与他们一起保存到他的核心数据库中。当设备上线时,应用程序将检查服务器上发生的变化并将新创建的记录保存到服务器(CloudKit)。

当应用程序启动时,它也获取了从CloudKit变化,如果有变化,它将更新本地高速缓存(核心数据)有了新的变化。

我很感激有同步的常见图案。在哪里放置与Core Data方法同步以及它们应该是什么样子?

希望得到任何信息或帮助。

我使用夫特3时,Xcode 8,的iOS 10.

+0

Adelmaer,它具有记录,上次更新,上次访问,权限等等等等,你可以将这些数据复制到你的核心数据,当您连接,看看是否有任何更新做交叉检查cloudkit将元数据存储。你也应该看看这个苏答案,可能是东西在这里http://*.com/questions/24509782/saving-modified-data-in-cloudkit?rq=1 – user3069232

核心数据已经提供了与同步到iCloud的能力给用户。没有必要使用CloudKit。

Design For Core Data In iCloud

但是,是的,随着iCloud的核心数据已被弃用。即使如此,它还有not been discontinued,并且苹果公司目前没有立即停止它的计划,他们只是想阻止它的使用。但它也有合理化多个设备更新的问题。

在任何情况下,我一直在寻找到如何与云套件自己做的这个问题。两个答案;首先是使用以下内容;

Seam in GitHub

第二是做手工;

Designing for CloudKit

这里的关键是,云计算套件需要记录的元数据,以便能够可靠地处理记录更新,所以你要保存元数据在你的核心数据的数据库。 CKRecord类包括一个方法encodeSystemFields(with:),它将把这些字段编码为可存储在数据库中的数据记录,然后在需要恢复CKRecord时可以使用适当的解码器。

无论如何,我即将开始自己做这件事。当我拥有它时,我会用更多的信息来更新它。

+0

也不敢保证,但我不认为核心数据可以进行iCloud共享,所以如果您需要使用CloudKit实现该功能。因为iOS的10.从来没有做过任何 – Jonny

+0

CoreData的iCloud已被弃用。 – Andy

+0

我的反应点,走出第三条线。除非说它从来没有奏效是愚蠢的。但是,是的,现在有更好的方法来解决这个问题。 –

苹果最近发布了一个似乎回答这个问题的指南。查看Apple的Maintaining a Local Cache of CloudKit Records以了解如何在设备上存储CloudKit数据。

虽然本指南未提供的示例代码写入装置,它回答这个问题的其余部分。这将告诉您如何从CloudKit获取更改并创建可以存储在设备上的数据。