【问题标题】:CloudKit CKRecordZoneCloudKit CKRecordZone
【发布时间】:2015-04-25 03:27:55
【问题描述】:

我一直在摆弄 CloudKit 一段时间,但我找不到一个真实的例子来说明如何使用 CKRecordZone。我了解他们的能力(即,对记录进行分组,特别是对于订阅),但有人有使用过它们的真实体验,并映射出哪个概念吗?

谢谢

【问题讨论】:

  • 只有私有数据库支持创建自己的区域。唯一的额外用途似乎是您可以将多条记录写为一个原子事务。缺点是您无法引用该区域之外的记录。所以...有谁知道在何时使用它时想出一个很好的例子?
  • 我认为您可以使用 CKModifyRecordOperation 写入多条记录,而无需使用区域。
  • 是的,但文档似乎表明这些仅在您使用区域时是原子的。

标签: ios cloudkit ckrecordzone


【解决方案1】:

Apple News 应用程序使用私人数据库中的两个区域来存储用户信息:ReadingList 和 ReadingHistory。 ReadingList 存储已添加书签的新闻文章 ID; ReadingHistory 存储已阅读的新闻文章 ID。通过将文章 ID 分成两个不同的区域,可以有效地同步它们。例如,如果一篇文章只在一个设备上阅读(并且没有添加书签),那么另一个设备会收到一个通知,即 ReadingHistory 区域已更改,那么它只需要同步该区域而不是同时同步两者。有关更多信息,您可以阅读我关于新闻应用同步行为的完整文章here

【讨论】:

    【解决方案2】:

    CloudKit 记录区为您提供三个主要好处:

    1. 它允许您执行原子操作(将应用所有更改或不应用任何更改)
    2. 它为您提供了同步功能,因此您可以从以前的时间点获取记录更改(使用更改令牌),而不必在每次与服务器通信时下载完整的记录列表。
    3. 这对于对属于一起的记录进行逻辑分组非常有用。

    【讨论】:

    • 您能举一个例子说明什么时候对这样的记录进行逻辑分组有用吗?
    【解决方案3】:

    此外,当您想要创建一个监控指定记录区域(基于区域,而不是基于查询)中所有记录的 CKSubscription 时,它可能会很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 2019-04-10
      • 2016-01-22
      • 2021-04-16
      • 1970-01-01
      相关资源
      最近更新 更多