gpt4 book ai didi

ios - 通过生成已知过期的 CKServerChangeToken 来测试 CKErrorChangeTokenExpired 处理

转载 作者:可可西里 更新时间:2023-11-01 06:13:27 25 4
gpt4 key购买 nike

CKFetchDatabaseChangesOperation fetchDatabaseChangesCompletionBlock 的标题注释指出:

“如果服务器返回一个 CKErrorChangeTokenExpired 错误,则 previousServerChangeToken 值太旧,客户端应该丢弃其本地缓存并 从 nil previousServerChangeToken 开始重新获取此记录区域中的更改。”

我想测试这个场景,因此我想生成一个过期的 CKServerChangeToken,这样我就可以将它设置为 CKFetchDatabaseChangesOperation 上的 previousServerChangeToken >.

我从私有(private) header 添加了一个初始化方法:

@interface CKServerChangeToken (Private)
- (id)initWithData:(NSData *)data;
@end

并按如下方式使用:

CKServerChangeToken knownExpiredToken = [[CKServerChangeToken alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:@"AQAAAVl57tUGHv6sgNT9EeaTcQCM+sDHHA==" options:0]];

该字符串是从请求返回的有效更改 token ,我尝试修改它但未成功,例如减少我看到递增到较低的数字。然而,我设法得到另一个奇怪的无效参数错误,比如缺少连续标记。如果 CloudKit 工程师有任何建议,我将不胜感激,谢谢。

最佳答案

这是一篇旧文章,但我这样做无意中生成了 .changeTokenExpired 错误:

  1. 获取更改并保存您的更改 token 。
  2. 在仪表板中,删除您正在同步的区域。
  3. 创建一个同名的新区域。
  4. 在您的代码中,使用第 1 步中的更改 token 再次获取更改。

由于 token 指向不同的区域,它对 CloudKit 没有任何意义,它会返回一个 .changeTokenExpired 错误。

关于ios - 通过生成已知过期的 CKServerChangeToken 来测试 CKErrorChangeTokenExpired 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41524503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com