2016-04-18 2 views
0

Я использовал объект NSURLConnection и иногда вызывал его метод cancel.NSURLSessionResponseCancel производит ошибку?

Теперь я должен заменить NSURLConnection ->NSURLSession. NSURLSession работает с задачами, которые также имеют метод cancel.

Проблема -[NSURLConnection cancel] просто прекратить обработку запросов, но если я использую -[NSURLSessionTask cancel], она производит «отмену ошибки». Итак, как правильно отличить, вызывается ли cancel вручную или возникает реальная ошибка?

+0

Каково точное содержание этой ошибки? Я предполагаю, что это объект «NSError»? Если да, то каково значение «code»? – trojanfoe

+0

po error дает 'Error Domain = NSURLErrorDomain Code = -999" отменено "UserInfo = {NSErrorFailingURLKey = ..., NSLocalizedDescription = отменено, NSErrorFailingURLStringKey = ...}' "..." - просто ссылки. И нет никакой информации в документации о том, что эта ошибка отправляется только вручную. –

+0

Так что я бы сказал, сравните 'error.code' с' -999'. – trojanfoe

ответ

0

я нашел 3 решения:

  • подкласс задачи/сессии класса

  • создать настраиваемое свойство с помощью метода swizzling в классе задач/сессии

  • самый простой, но не очень beautiful way - task имеет свойство string taskDescription, и в документации говорится, что разработчики могут использовать его по своему усмотрению.

0

Сравните код ошибки NSURLErrorCancelled. Этот код ошибки генерируется только тогда, когда ваш код отменяет запрос.

+0

еще раз - в документации нет информации о том, что он отправлен моим кодом –

+0

Я написал многие из тех документов лет назад, так что, наверное, неисправность. Система загрузки URL-адресов AFAIK не отменяет запросы. Запросы либо успешны, либо неудачны. Есть только три способа, которыми я знаю, чтобы получить этот код ошибки: вызывая блок обработчика завершения в методе didReceiveResponse с помощью 'NSURLSessionResponseCancel', вызывая метод' cancel' в задаче или, возможно, вызывая блок обработчика завершения аутентификации с помощью 'NSURLSessionAuthChallengeCancelAuthenticationChallenge', и я не уверен в этом последнем. Во всех трех случаях ваш код делал отмену. – dgatwood

Смежные вопросы