什么是CKModifyRecordsOperation中的clientChangeTokenData?

Rin*_*nov 10 ios cloudkit ckmodifyrecordsoperation

我正在我的应用程序中进行CloudKit同步("微小数据,所有设备"模型,私有数据库中的自定义区域).

CKModifyRecordsOperation包含文档中描述clientChangeTokenDataNSData类型属性,如下所示:

从提取操作修改记录时,请使用此属性指定客户端生成的数据标记,以指示上次修改的记录的版本.比较您在下一次记录提取中提供给数据令牌的数据令牌,以确认服务器已成功接收设备的上次修改请求.

我不明白为什么我应该打扰,因为每个请求,我得到一个完成块,告诉我服务器是否已成功收到我的请求.为什么我需要手动比较此客户端令牌?

是否clientChangeTokenData需要正确处理我的用例?我跟踪本地数据更改并在每次数据更改时推送队列中的所有内容.通过区域订阅跟踪远程更改.

如果需要,我如何正确生成此令牌,因为我的所有记录更改CKModifyRecordsOperation(我的API使用目的是批处理操作).这里的一般工作流程是什么?

谢谢.

mal*_*hal 5

从文档中尚不清楚,所以我猜这clientChangeTokenData在发送大型修改记录操作(例如删除 100 条记录)的情况下很有用。然后假设您的应用程序在另一个操作中发送了一个带有查询(或获取更改)结果集的获取请求,该结果集将受到以下修改的影响:

  1. 已启动并与尚未完成的现有修改操作同时运行。
  2. 在服务器完成处理先前修改的结果之前启动(文档倾向于暗示处理延迟)。

如果获取完成包含的内容clientChangeTokenData与随修改一起发送的内容不同,那么您就知道它尚未收到(或完成处理?)更改。在这种情况下,您可能会出错,并发出警报,指出服务器需要更多时间,或者在一段时间后自动重试提取。

顺便说一句,在我的测试中,这个令牌是针对每个设备的。


Edw*_*eer 3

只有当您有想要写入 CloudKit 的本地更改并且希望确保您的更改基于 CloudKit 中数据的最新版本时,您才有理由检查令牌。

您也可以忽略令牌并保存数据。如果数据同时发生变化,您将收到 CloudKit 错误,然后您可以处理它。