CKQueryOperation получил ошибку "Нет операций, присутствующих в запросе" случайно

Я пытаюсь получить некоторые записи из 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";
NSLocalizedDescription = "В запросе нет операций";
NSUnderlyingError = "Ошибка домена =CKInternalErrorDomain Code=1009 \" В запросе нет операций \" UserInfo={NSLocalizedDescription= В запросе нет операций}";
}

Я проверил код ошибки, это CKErrorInvalidArgumentsкоторый, как сказал док

Неверный клиентский запрос (неверный граф записей, неверный предикат)

Я понятия не имею, как возникает эта ошибка и как ее обработать, в отличие CKErrorNetworkUnavailable ошибка, не имеет CKErrorRetryAfterKey значение в error.userInfo для меня, чтобы отправить запрос через определенный промежуток времени.


Кстати, когда я получил эту ошибку, все мои операции будут иметь эту ошибку без какой-либо записи возвращено.

0 ответов

Другие вопросы по тегам