我正在尝试使用下面的代码片段从云服务器获取一些记录。它在大多数情况下返回没有任何错误的记录:
CKQuery * query = [[CKQuery alloc] initWithRecordType:@"MyTable"
predicate:[NSPredicate predicateWithFormat:@"accountID = 1"]];
CKQueryOperation * recordFetchOperation = [[CKQueryOperation alloc] initWithQuery:query];
recordFetchOperation.database = [[CKContainer defaultContainer] privateCloudDatabase];
recordFetchOperation.recordFetchedBlock = ^(CKRecord *record) {
// get records succeed some times
};
recordFetchOperation.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *operationError) {
if (operationError) [self _handleError:operationError];
};
... // some other operations
NSOperationQueue * queue = [[NSOperationQueue alloc] init];
[queue addOperations:@[recordFetchOperation, ...]
waitUntilFinished:NO];
但有时,它会返回错误:
{
NSDebugDescription = "CKInternalErrorDomain: 1009";
NSLocalizedDescription = "请求中没有操作";
NSUnderlyingError = "错误域=CKInternalErrorDomain Code=1009 \"请求中没有操作\" UserInfo={NSLocalizedDescription=请求中没有操作}";
}
我检查了错误代码,它是CKErrorInvalidArguments
,正如文档所说
错误的客户端请求(错误的记录图、格式错误的谓词)
我不知道这个错误是怎么来的以及如何处理这个错误,与错误不同,它对我在一段时间后发送请求CKErrorNetworkUnavailable
没有CKErrorRetryAfterKey
价值。error.userInfo
顺便说一句,当我收到这个错误时,我的所有操作都会有这个错误,没有返回任何记录。