CKQueryOperation出错"请求中没有任何操作"随机

时间:2016-05-02 11:52:35

标签: ios objective-c cloudkit ckqueryoperation ckerror

我试图从下面的代码片段中获取Cloud Server中的一些记录。它在大多数时间内返回没有任何错误的记录:

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&#34 ;;
    NSLocalizedDescription ="请求中没有操作";
    NSUnderlyingError ="错误域= CKInternalErrorDomain代码= 1009 \"请求中没有任何操作\" UserInfo = {NSLocalizedDescription =请求中不存在任何操作}";
  }

我已经检查了错误代码,它是CKErrorInvalidArguments,正如doc所说

  

错误的客户端请求(错误的记录图,格式错误的谓词)

我不知道这个错误是怎么来的,以及如何处理这个错误,与CKErrorNetworkUnavailable错误不同,它CKErrorRetryAfterKey中的error.userInfo值没有让我发送请求一段时间后。

顺便说一句,当我收到此错误时,我的所有操作都会出现此错误,而不会返回任何记录。

0 个答案:

没有答案