【发布时间】:2017-01-07 17:45:39
【问题描述】:
CKFetchDatabaseChangesOperationfetchDatabaseChangesCompletionBlock 的标题评论指出:
"如果服务器返回一个CKErrorChangeTokenExpired 错误,previousServerChangeToken 值太旧,客户端应该扔掉它的本地缓存和
以 nil previousServerChangeToken 开头重新获取此记录区域中的更改。"
我想测试这个场景,因此我想生成一个过期的CKServerChangeToken,这样我就可以将它设置为CKFetchDatabaseChangesOperation 上的previousServerChangeToken。
我从私有头中添加了一个 init 方法:
@interface CKServerChangeToken (Private)
- (id)initWithData:(NSData *)data;
@end
并使用如下:
CKServerChangeToken knownExpiredToken = [[CKServerChangeToken alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:@"AQAAAVl57tUGHv6sgNT9EeaTcQCM+sDHHA==" options:0]];
该字符串是从请求返回的有效更改令牌,我尝试修改它但未成功,例如减少我看到的递增到更低的数字。但是,我设法得到另一个奇怪的无效参数错误,例如缺少延续标记。如果 CloudKit 工程师有任何建议,我将不胜感激,谢谢。
【问题讨论】:
标签: ios objective-c cloudkit