NSURLSessionDataDelegate
NSURLSessionDataDelegate
протокол определяет методы что делегат NSURLSession
объект может реализовать для обработки событий уровня задачи, определенных для задач данных и задач загрузки. Ваш делегат сеанса должен также реализовать методы в NSURLSessionTaskDelegate
протокол для обработки событий уровня задачи, которые характерны для всех типов задачи и методов в NSURLSessionDelegate
протокол для обработки событий сеансового уровня.
Наследование
Не применимый
Соответствует
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: dataTask:didReceiveResponse:completionHandler:) - URLSession:dataTask:didReceiveResponse:completionHandler:
Говорит делегату, что задача данных получила начальный ответ (заголовки) от сервера.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, dataTaskdataTask
: NSURLSessionDataTask, didReceiveResponseresponse
: NSURLResponse, completionHandlercompletionHandler
: (NSURLSessionResponseDisposition) -> Void)Objective C
- (void)URLSession:(NSURLSession *)
session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
Параметры
session
Сеанс, содержащий задачу данных, получившую начальный ответ.
dataTask
Задача данных, получившая начальный ответ.
response
Объект ответа URL заполняется с заголовками.
completionHandler
Обработчик завершения, который Ваш код вызывает для продолжения передачи, передавая константу, чтобы указать, должна ли передача продолжаться как задача данных или должна стать задачей загрузки.
Если Вы передаете
NSURLSessionResponseAllow
, задача обычно продолжается.Если Вы передаете
NSURLSessionResponseCancel
, задача отменяется.Если Вы передаете
NSURLSessionResponseBecomeDownload
как расположение, Ваш делегатURLSession:dataTask:didBecomeDownloadTask:
метод вызывают для обеспечения Вас новой задачей загрузки, заменяющей текущую задачу.
Обсуждение
Этот метод является дополнительным, если Вы не должны поддерживать (относительно неясный)
multipart/x-mixed-replace
тип контента. С тем типом контента сервер отправляет серию частей, каждая из которых предназначается для замены предыдущей части. Сеанс вызывает этот метод в начале каждой части, и необходимо тогда вывести на экран, отбросить, или иначе обработать предыдущую часть, как надлежащую.Если Вы не обеспечиваете этот метод делегата, сеанс всегда позволяет задаче продолжаться.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, что задача данных была изменена на задачу загрузки.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, dataTaskdataTask
: NSURLSessionDataTask, didBecomeDownloadTaskdownloadTask
: NSURLSessionDownloadTask)Objective C
- (void)URLSession:(NSURLSession *)
session
dataTask:(NSURLSessionDataTask *)dataTask
didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask
Параметры
session
Сеанс, содержащий задачу, замененную задачей загрузки.
dataTask
Задача данных, замененная задачей загрузки.
downloadTask
Новая задача загрузки, заменившая задачу данных.
Обсуждение
Когда делегат
URLSession:dataTask:didReceiveResponse:completionHandler:
метод решает измениться, расположение от данных запрашивают к загрузке, сеанс вызывает этот метод делегата предоставить Вам новую задачу загрузки. После этого вызова делегат сеанса не получает дальнейших вызовов метода делегата, связанных с исходной задачей данных.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
Говорит делегату, что задача данных получила некоторые ожидаемые данные.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, dataTaskdataTask
: NSURLSessionDataTask, didReceiveDatadata
: NSData)Objective C
- (void)URLSession:(NSURLSession *)
session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data
Параметры
session
Сеанс, содержащий задачу данных те предоставленные данные.
dataTask
Задача данных те предоставленные данные.
data
Объект данных, содержащий переданные данные.
Обсуждение
Поскольку
NSData
объект часто соединяется от многих различных объектов данных, когда это возможно, используйте NSData’senumerateByteRangesUsingBlock:
метод для итерации через данные вместо того, чтобы использоватьbytes
метод (который сглаживаетсяNSData
объект в единственный блок памяти).Этот метод делегата можно вызвать несколько раз, и каждый вызов предоставляет только данные, полученные начиная с предыдущего вызова. Приложение ответственно за накопление этих данных в случае необходимости.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
URLSession (_: dataTask:willCacheResponse:completionHandler:) - URLSession:dataTask:willCacheResponse:completionHandler:
Спрашивает делегат, должны ли данные (или загрузка) задача сохранить ответ в кэше.
Объявление
Swift
optional func URLSession(_
session
: NSURLSession, dataTaskdataTask
: NSURLSessionDataTask, willCacheResponseproposedResponse
: NSCachedURLResponse, completionHandlercompletionHandler
: (NSCachedURLResponse!) -> Void)Objective C
- (void)URLSession:(NSURLSession *)
session
dataTask:(NSURLSessionDataTask *)dataTask
willCacheResponse:(NSCachedURLResponse *)proposedResponse
completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler
Параметры
session
Сеанс, содержащий данные (или загрузка) задача.
dataTask
Данные (или загрузка) задача.
proposedResponse
Поведение кэширования значения по умолчанию. Это поведение определяется на основе текущей политики кэширования и значений определенных полученных заголовков, такой как
Pragma
иCache-Control
заголовки.completionHandler
Блок, который Ваш обработчик должен вызвать, обеспечив или исходный предложенный ответ, измененную версию того ответа, или
NULL
предотвратить кэширование ответа. Если Ваш делегат реализует этот метод, он должен вызвать этот обработчик завершения; иначе, Ваше приложение пропускает память.Обсуждение
Сеанс вызывает этот метод делегата после того, как задача закончит получать все ожидаемые данные. Если Вы не реализуете этот метод, поведение по умолчанию состоит в том, чтобы использовать кэширующуюся политику, указанную в объекте конфигурации сеанса. Основная цель этого метода состоит в том, чтобы предотвратить кэширование определенного URLs или изменить
userInfo
словарь связался с ответом URL.Этот метод вызывают только если
NSURLProtocol
обрабатывание запроса решает кэшировать ответ. Как правило ответы кэшируются только, когда все следующее является истиной:Запросом является для HTTP или HTTPS URL (или Ваш собственный сетевой протокол, поддерживающий кэширование).
Запрос был успешен (с кодом состояния в
200–299
диапазон).Предоставленный ответ прибыл из сервера, а не из кэша.
Политика кэша конфигурации сеанса позволяет кэшироваться.
Предоставленное
NSURLRequest
политика кэша объекта (если применимо) позволяет кэшироваться.Связанные с кэшем заголовки в ответе сервера (если есть) позволяют кэшироваться.
Размер ответа является достаточно маленьким к довольно подходящему в кэше. (Например, при обеспечении дискового кэша ответ должен быть не больше, чем приблизительно 5% размера дискового кэша.)
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-
Константы, указывающие, как данные или сеанс загрузки должны продолжиться после получения начальных заголовков.
Объявление
Swift
enum NSURLSessionResponseDisposition : Int { case Cancel case Allow case BecomeDownload }
Objective C
typedef NS_ENUM (NSInteger, NSURLSessionResponseDisposition ) { NSURLSessionResponseCancel = 0, NSURLSessionResponseAllow = 1, NSURLSessionResponseBecomeDownload = 2 };
Константы
-
Cancel
NSURLSessionResponseCancel
Отмените загрузку. Эквивалентный вызову
cancel
на задаче.Доступный в OS X v10.9 и позже.
-
Allow
NSURLSessionResponseAllow
Позвольте работе загрузки продолжаться.
Доступный в OS X v10.9 и позже.
-
BecomeDownload
NSURLSessionResponseBecomeDownload
Преобразуйте этот запрос в задачу загрузки.
Доступный в OS X v10.9 и позже.
Обсуждение
Данные или задача загрузки
URLSession:dataTask:didReceiveResponse:completionHandler:
метод делегата передает эти константы предоставленному блоку обработчика завершения.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.9 и позже.
-