NSURLSessionTaskDelegate
NSURLSessionTaskDelegate протокол определяет специфичные для задачи методы делегата, которые необходимо реализовать при работе с любым типом NSURLSession задача.
Если Вы используете задачи загрузки, также реализуете методы в NSURLSessionDownloadDelegate протокол.
Если Вы используете данные или загружаете задачи, также реализуете методы в NSURLSessionDataDelegate протокол.
Наследование
Не применимый
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, что задача закончила передавать данные.
Объявление
Swift
optional func URLSession(_session: NSURLSession, tasktask: NSURLSessionTask, didCompleteWithErrorerror: NSError?)Objective C
- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)taskdidCompleteWithError:(NSError *)errorПараметры
sessionСеанс, содержащий задачу, запрос которой закончил передавать данные.
taskЗадача, запрос которой закончил передавать данные.
errorЕсли ошибка произошла, ошибочный объект указание, как передача перестала работать, иначе
NULL.Обсуждение
Об ошибках сервера не сообщают через
errorпараметр. Единственные ошибки Ваш делегат получают черезerrorпараметр является ошибками клиентской стороны, такими как неспособность для разрешения имени хоста или подключения к узлу.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:didReceiveChallenge:completionHandler:) - URLSession:task:didReceiveChallenge:completionHandler:Учетные данные запросов от делегата в ответ на запрос аутентификации от удаленного сервера.
Объявление
Swift
optional func URLSession(_session: NSURLSession, tasktask: NSURLSessionTask, didReceiveChallengechallenge: NSURLAuthenticationChallenge, completionHandlercompletionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)taskdidReceiveChallenge:(NSURLAuthenticationChallenge *)challengecompletionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandlerПараметры
sessionСеанс, содержащий задачу, запрос которой требует аутентификации.
taskЗадача, запрос которой требует аутентификации.
challengeОбъект, содержащий запрос на аутентификацию.
completionHandlerОбработчик, который должен вызвать Ваш метод делегата. Его параметры:
disposition— Одна из нескольких констант, описывающая, как должна быть обработана проблема.credential— Учетные данные, которые должны использоваться для аутентификации, если расположениеNSURLSessionAuthChallengeUseCredential; иначе,NULL.
Обсуждение
Этот метод обрабатывает запросы аутентификации уровня задачи.
NSURLSessionDelegateпротокол также обеспечивает метод делегата аутентификации сеансового уровня. Вызванный метод зависит от типа запроса аутентификации:Для проблем сеансового уровня —
NSURLAuthenticationMethodNTLM,NSURLAuthenticationMethodNegotiate,NSURLAuthenticationMethodClientCertificate, илиNSURLAuthenticationMethodServerTrust—NSURLSessionвызовы объектов делегат сеансаURLSession:didReceiveChallenge:completionHandler:метод. Если Ваше приложение не обеспечивает метод делегата сеанса,NSURLSessionвызовы объектов делегат задачиURLSession:task:didReceiveChallenge:completionHandler:метод для обработки проблемы.Для проблем несеансового уровня (все другие),
NSURLSessionвызовы объектов делегат сеансаURLSession:task:didReceiveChallenge:completionHandler:метод для обработки проблемы. Если Ваше приложение предоставляет делегату сеанса, и необходимо обработать аутентификацию, то необходимо или обработать аутентификацию на уровне задачи или обеспечить обработчик уровня задачи, вызывающий обработчик на сеанс явно. Делегат сеансаURLSession:didReceiveChallenge:completionHandler:метод не вызывают для проблем несеансового уровня.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:) - URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:Периодически сообщает делегату прогресса передающего содержания организации к серверу.
Объявление
Swift
optional func URLSession(_session: NSURLSession, tasktask: NSURLSessionTask, didSendBodyDatabytesSent: Int64, totalBytesSenttotalBytesSent: Int64, totalBytesExpectedToSendtotalBytesExpectedToSend: Int64)Objective C
- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)taskdidSendBodyData:(int64_t)bytesSenttotalBytesSent:(int64_t)totalBytesSenttotalBytesExpectedToSend:(int64_t)totalBytesExpectedToSendПараметры
sessionСеанс, содержащий задачу данных.
taskЗадача данных.
bytesSentЧисло байтов, отправленных с прошлого раза этот метод делегата, вызвали.
totalBytesSentОбщее количество байтов отправило до сих пор.
totalBytesExpectedToSendОжидаемая длина данных организации. Загрузочная система URL может определить длину данных загрузки тремя способами:
От длины
NSDataобъект обеспечил как организация загрузки.От длины файла на диске, предоставленном как организация загрузки задачи загрузки (не задача загрузки).
От
Content-Lengthв объекте запроса, если Вы явно устанавливаете его.
Иначе, значение
NSURLSessionTransferSizeUnknown(-1) если Вы обеспечили поток или объект данных организации или нуль (0) если Вы не сделали.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, когда задача требует, чтобы новый поток организации запроса отправил к удаленному серверу.
Объявление
Swift
optional func URLSession(_session: NSURLSession, tasktask: NSURLSessionTask, needNewBodyStreamcompletionHandler: (NSInputStream!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)taskneedNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandlerПараметры
sessionСеанс, содержащий задачу, которой нужен новый поток организации.
taskЗадача, которой нужен новый поток организации.
completionHandlerОбработчик завершения, который Ваш метод делегата должен вызвать с новым потоком организации.
Обсуждение
Этот метод делегата вызывают при двух обстоятельствах:
Обеспечить начальный поток организации запроса, если задача создавалась с
uploadTaskWithStreamedRequest:Для обеспечения замены запрашивают поток организации, если задача должна снова послать запрос, имеющий поток организации из-за запроса аутентификации или другой восстанавливаемой ошибки сервера.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: task:willPerformHTTPRedirection:newRequest:completionHandler:) - URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:Говорит делегату, что удаленный сервер запросил перенаправление HTTP.
Объявление
Swift
optional func URLSession(_session: NSURLSession, tasktask: NSURLSessionTask, willPerformHTTPRedirectionresponse: NSHTTPURLResponse, newRequestrequest: NSURLRequest, completionHandlercompletionHandler: (NSURLRequest!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)sessiontask:(NSURLSessionTask *)taskwillPerformHTTPRedirection:(NSHTTPURLResponse *)responsenewRequest:(NSURLRequest *)requestcompletionHandler:(void (^)(NSURLRequest *))completionHandlerПараметры
sessionСеанс, содержащий задачу, запрос которой привел к перенаправлению.
taskЗадача, запрос которой привел к перенаправлению.
responseОбъект, содержащий ответ сервера на исходный запрос.
requestОбъект URL-запроса заполнен с новым расположением.
completionHandlerБлок, что Ваш обработчик должен вызвать с любым значение
requestпараметр, измененный объект URL-запроса, илиNULLотказаться от перенаправления и возвратить организацию ответа перенаправления.Обсуждение
Этот метод вызывают только для задач в и эфемерных сеансах по умолчанию. Задачи в фоновых сеансах автоматически следуют за перенаправлениями.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в OS X v10.9 и позже.
