NSURLSession didCompleteWithError: вызывается с NSError равным нулю

Сценарий переводит приложение в фоновый и передний план несколько раз, когда идет его загрузка, вызывается метод didCompleteWithError: при переводе приложения на передний план с параметром ошибки, равным нулю. Вероятность 1/3.

Как мне узнать, что пошло не так, так как параметр ошибки ничего не дает.


person Vani    schedule 07.07.2015    source источник
comment
Я думаю, это может дать вам подсказку: - stackoverflow.com/questions/ 19236440/когда-выполняется-nsurlssion-run   -  person Mayank Jain    schedule 07.07.2015
comment
это не помогло. Есть ли другой способ получить то, что вызывает нулевую ошибку, одновременно не завершающуюся успешно   -  person Vani    schedule 13.07.2015
comment
Привет, Ваня, ты решил эту проблему?   -  person Murali    schedule 24.03.2016
comment
не может решить и обновить здесь, если вы можете найти какое-либо решение.   -  person Vani    schedule 30.03.2016
comment
@Вани. Попробуйте проверить - URLSession:didBecomeInvalidWithError: путем реализации делегата NURLSession:developer.apple.com/library/ios/documentation/Foundation/:   -  person christian mini    schedule 15.05.2016


Ответы (1)


Проблема в том, что didCompleteWithError сообщает только об ошибке на стороне клиента, в противном случае это ноль. Документ iOS сказал:

"Сообщения об ошибках сервера не передаются с помощью параметра error. Единственные ошибки, которые ваш делегат получает с помощью параметра error, – это ошибки на стороне клиента, например невозможность разрешить имя хоста или подключиться к хосту. ."

Это ссылка на документацию. .

Если вы хотите проверить ошибки сеанса, вам необходимо реализовать делегат протокола сеанса

- URLSession:didBecomeInvalidWithError:

Не забудьте аннулировать сеанс после прекращения его использования. Итак, если вы создадите NSURLSession следующим образом:

NSURLSessionConfiguration *backgroundConfigurationObject = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"applycasession"];
    self.backgroundSession = [NSURLSession sessionWithConfiguration:backgroundConfigurationObject delegate:self delegateQueue:[NSOperationQueue mainQueue]];

Когда вы закончите использовать его, вы должны позвонить:

 [self.backgroundSession invalidateAndCancel];

Прочтите документы о «Жизненный цикл сеанса URL» по адресу ссылка

person christian mini    schedule 15.05.2016