0

以下のコード スニペットを使用して、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 = "エラー Domain=CKInternalErrorDomain Code=1009 \"No operations present in request\" UserInfo={NSLocalizedDescription=No operations present in request}";
}

エラーコードを確認しましたがCKErrorInvalidArguments、ドキュメントが言ったように

不正なクライアント リクエスト (不正なレコード グラフ、不正な述語)

このエラーがどのように発生し、このエラーを処理する方法がわかりCKErrorNetworkUnavailableません。エラーとは異なり、時間間隔の後にリクエストを送信するCKErrorRetryAfterKey価値はありません。error.userInfo


ところで、このエラーが発生すると、すべての操作でこのエラーが発生し、レコードが返されません。

4

0 に答える 0