mal*_*hal 5 objective-c ios cloudkit
标题评论指出CKFetchDatabaseChangesOperation fetchDatabaseChangesCompletionBlock:
“如果服务器返回CKErrorChangeTokenExpired错误,则该previousServerChangeToken值太旧,客户端应该丢弃其本地缓存并重新获取此记录区域中以 nil 开头的更改previousServerChangeToken。”
我想测试这个场景,因此我想生成一个过期的,CKServerChangeToken这样我就可以将其设置previousServerChangeToken为CKFetchDatabaseChangesOperation.
我从私有标头添加了一个 init 方法:
@interface CKServerChangeToken (Private)
- (id)initWithData:(NSData *)data;
@end
Run Code Online (Sandbox Code Playgroud)
并按如下方式使用它:
CKServerChangeToken knownExpiredToken = [[CKServerChangeToken alloc] initWithData:[[NSData alloc] initWithBase64EncodedString:@"AQAAAVl57tUGHv6sgNT9EeaTcQCM+sDHHA==" options:0]];
Run Code Online (Sandbox Code Playgroud)
该字符串是从请求返回的有效更改令牌,我尝试修改它但未成功,例如将我看到的递增数字减少到较低的数字。然而,我设法得到了另一个奇怪的无效参数错误,例如缺少连续标记。如果CloudKit工程师有任何建议,我将不胜感激,谢谢。
如果苹果提供一种方法来做到这一点,那就太好了,因为这是一个绝对需要测试的关键情况。
我找不到任何推荐的方法来执行此操作,因此我使用了为其他区域生成的令牌。如果您像我一样拥有多个区域,则可以有效地跨线令牌检索。这不是一个优雅的解决方案,但它确实有效......:)
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |