标签: ckoperation

如何有效地同步Core Data和CloudKit之间的记录

我目前正在学习如何使用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.

core-data cloudkit swift3 ckoperation ios10

25
推荐指数
3
解决办法
9707
查看次数

优化 CKFetchRecordZoneChangesOperation 以获取desiredKeys

在我的 CloudKit 应用程序中,我在存储所有 CKRecord 的私有数据库中创建一个区域。CKRecords 可以有 10 种不同的记录类型,其中一些可以附加 CKAssets。我用来CKFetchRecordZoneChangesOperation查找该区域中的记录更改,并下载它们。我想优化,CKFetchRecordZoneChangesOperation以便只包含desiredKeys在下载中,所以当时我不下载 CKAsset,但似乎没有任何方法可以指定每个记录类型。相反,您似乎只能指定desiredKeyson CKFetchRecordZoneChangesOptions,它是在 zoneID 上设置的。

CKFetchRecordZoneChangesOperation那么,考虑到该区域中有不同类型的记录类型,如何在获取时指定“desiredKeys” ?我在这里缺少一些简单的东西吗?我猜想另一个(彻底的)选项是为每种记录类型创建一个记录区域,但如果有可能的话,我不想走这条路。

谢谢。

ios cloudkit ckoperation ios10 ckrecordzone

5
推荐指数
1
解决办法
474
查看次数

标签 统计

ckoperation ×2

cloudkit ×2

ios10 ×2

ckrecordzone ×1

core-data ×1

ios ×1

swift3 ×1