我目前正在学习如何使用CloudKit Framework以及缺少显示如何同步Core Data和CloudKit的文档或示例.
我观看了所有WWDC视频(2014年,2015年,2016年)专门介绍CloudKit,但没有人告诉我们如何实现与Core Data的同步.我找不到任何新的示例,教程或书籍,展示了如何实现此同步.
我知道使用CloudKit的Operations API(不是Convenience API)和订阅更新是有效的,就像在新的WWDC 2016视频中所说的那样,专用于CloudKit,但使用CoreData进行映射是一个真正的问题.
例如,假设我想创建一个类似于Notes应用程序的应用程序.离线时,用户可以创建他的笔记并与他们一起工作,将他们保存到他的核心数据库中.当设备上线时,应用程序会检查服务器上的更改并将新创建的记录保存到服务器(CloudKit).
当应用程序启动时,它还会从CloudKit获取更改,如果有更改,它会使用新更改更新本地缓存(核心数据).
我希望有一个共同的同步模式.在哪里与Core Data方法同步以及它们应该如何?
非常感谢有关此的任何信息或帮助.
我正在使用Swift 3,Xcode 8,iOS 10.
在我的 CloudKit 应用程序中,我在存储所有 CKRecord 的私有数据库中创建一个区域。CKRecords 可以有 10 种不同的记录类型,其中一些可以附加 CKAssets。我用来CKFetchRecordZoneChangesOperation查找该区域中的记录更改,并下载它们。我想优化,CKFetchRecordZoneChangesOperation以便只包含desiredKeys在下载中,所以当时我不下载 CKAsset,但似乎没有任何方法可以指定每个记录类型。相反,您似乎只能指定desiredKeyson CKFetchRecordZoneChangesOptions,它是在 zoneID 上设置的。
CKFetchRecordZoneChangesOperation那么,考虑到该区域中有不同类型的记录类型,如何在获取时指定“desiredKeys” ?我在这里缺少一些简单的东西吗?我猜想另一个(彻底的)选项是为每种记录类型创建一个记录区域,但如果有可能的话,我不想走这条路。
谢谢。