CloudKit CKRecordZone
Posted
技术标签:
【中文标题】CloudKit CKRecordZone【英文标题】: 【发布时间】:2015-04-25 03:27:55 【问题描述】:我一直在摆弄 CloudKit 一段时间,但我找不到一个真实的例子来说明如何使用 CKRecordZone。我了解他们的能力(即,对记录进行分组,特别是对于订阅),但有人有使用过它们的真实体验,并映射出哪个概念吗?
谢谢
【问题讨论】:
只有私有数据库支持创建自己的区域。唯一的额外用途似乎是您可以将多条记录写为一个原子事务。缺点是您无法引用该区域之外的记录。所以...有谁知道在何时使用它时想出一个很好的例子? 我认为您可以使用 CKModifyRecordOperation 写入多条记录,而无需使用区域。 是的,但文档似乎表明这些仅在您使用区域时是原子的。 【参考方案1】:Apple News 应用程序使用私人数据库中的两个区域来存储用户信息:ReadingList 和 ReadingHistory。 ReadingList 存储已添加书签的新闻文章 ID; ReadingHistory 存储已阅读的新闻文章 ID。通过将文章 ID 分成两个不同的区域,可以有效地同步它们。例如,如果一篇文章只在一个设备上阅读(并且没有添加书签),那么另一个设备会收到一个通知,即 ReadingHistory 区域已更改,那么它只需要同步该区域而不是同时同步两者。有关更多信息,您可以阅读我关于新闻应用同步行为的完整文章here。
【讨论】:
【参考方案2】:CloudKit 记录区为您提供三个主要好处:
-
它允许您执行原子操作(将应用所有更改或不应用任何更改)
它为您提供了同步功能,因此您可以从以前的时间点获取记录更改(使用更改令牌),而不必在每次与服务器通信时下载完整的记录列表。
这对于对属于一起的记录进行逻辑分组非常有用。
【讨论】:
您能举一个例子说明什么时候对这样的记录进行逻辑分组有用吗?【参考方案3】:此外,当您想要创建一个监控指定记录区域(基于区域,而不是基于查询)中所有记录的 CKSubscription 时,它可能会很有用。
【讨论】:
以上是关于CloudKit CKRecordZone的主要内容,如果未能解决你的问题,请参考以下文章
cloudKit:公共数据库中的 CKFetchRecordChangesOperation