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
,