首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >clientChangeTokenData in CKModifyRecordsOperation是什么?

clientChangeTokenData in CKModifyRecordsOperation是什么?
EN

Stack Overflow用户
提问于 2016-02-02 11:45:52
回答 2查看 899关注 0票数 10

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

CKModifyRecordsOperation包含NSData类型的clientChangeTokenData属性,在文档中描述如下:

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

对于每个请求,我不明白为什么要费心,因为我得到一个完成块,它告诉我服务器是否成功地接收到了我的请求。为什么我需要手动比较这个客户端令牌?

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

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

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-01-11 02:56:08

从文档中还不清楚,所以我想clientChangeTokenData在发送大型修改记录操作(例如删除100个记录)时是有用的。然后假设您的应用程序在另一个操作中发送一个fetch请求,其中包含一个查询(或获取更改)结果集,这些结果集将受到以下修改的影响:

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

如果提取完成包含一个与修改一起发送的clientChangeTokenData不同,那么您知道它还没有收到(或者完成了处理吗?)变化还在。在这种情况下,您可能会出错,警告说服务器需要更多时间,或者在一段时间后自动重试提取。

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

票数 5
EN

Stack Overflow用户

发布于 2016-02-02 12:59:11

如果您有要写入CloudKit的本地更改,并且希望确保您的更改是基于CloudKit中数据的最新版本,则只需要检查令牌。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35152586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档