CKModifyRecordsOperation modifyRecordsCompletionBlock не вызывается

Я использую CKModifyRecordsOperation чтобы сохранить набор записей, и если у меня есть подключение к Интернету, все работает хорошо, и вызывается блок завершения. Но когда у меня нет соединения, блок завершения не вызывается, и я не получаю никакой информации о том, что мои операции завершились неудачно.

Я использую следующий код в блоке завершения

modifyOperations.modifyRecordsCompletionBlock = ^(NSArray *savedRecords, NSArray *deletedRecordIDs, NSError *error)
{
    if(error){
        NSLog(@"Error: %@", error.localizedDescription);
    }

    item.creatorRecordId = record.recordID;
};

а затем я выполняю операцию, используя

[self.publicDB addOperation:modifyOperations];

Любые идеи, как я могу получить информацию, если операция не удалась, например, в случае, когда нет подключения к интернету?

1 ответ

Решение

CloudKit операции имеют свои qualityOfService свойство установлено в NSQualityOfServiceUtility по умолчанию.

Операции, которые используют NSQualityOfServiceUtility или же NSQualityOfServiceBackground может быть помечен как использующий дискреционные запросы сети. Система может удерживать дискреционные сетевые запросы, если сетевое соединение плохое, поэтому вы можете не получить ответ от сервера, пока не улучшатся условия и система не отправит запрос.

Если вы хотите, чтобы ваш запрос был отправлен сразу во всех случаях, установите CKOperation.qualityOfService в NSQualityOfServiceUserInitiated или же NSQualityOfServiceUserInteractive,

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