NSURLSessionDataDelegate
Наследование
Не применимый
Соответствует
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 7.0 и позже.
NSURLSessionDataDelegate протокол определяет методы что делегат NSURLSession объект может реализовать для обработки событий уровня задачи, определенных для задач данных и задач загрузки. Ваш делегат сеанса должен также реализовать методы в NSURLSessionTaskDelegate протокол для обработки событий уровня задачи, которые характерны для всех типов задачи и методов в NSURLSessionDelegate протокол для обработки событий сеансового уровня.
-
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 *)sessiondataTask:(NSURLSessionDataTask *)dataTaskdidReceiveResponse:(NSURLResponse *)responsecompletionHandler:(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Доступность
Доступный в iOS 7.0 и позже.
-
Говорит делегату, что задача данных была изменена на задачу загрузки.
Объявление
Swift
optional func URLSession(_session: NSURLSession, dataTaskdataTask: NSURLSessionDataTask, didBecomeDownloadTaskdownloadTask: NSURLSessionDownloadTask)Objective C
- (void)URLSession:(NSURLSession *)sessiondataTask:(NSURLSessionDataTask *)dataTaskdidBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTaskПараметры
sessionСеанс, содержащий задачу, замененную задачей загрузки.
dataTaskЗадача данных, замененная задачей загрузки.
downloadTaskНовая задача загрузки, заменившая задачу данных.
Обсуждение
Когда делегат
URLSession:dataTask:didReceiveResponse:completionHandler:метод решает измениться, расположение от данных запрашивают к загрузке, сеанс вызывает этот метод делегата предоставить Вам новую задачу загрузки. После этого вызова делегат сеанса не получает дальнейших вызовов метода делегата, связанных с исходной задачей данных.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 7.0 и позже.
-
Говорит делегату, что задача данных получила некоторые ожидаемые данные.
Объявление
Swift
optional func URLSession(_session: NSURLSession, dataTaskdataTask: NSURLSessionDataTask, didReceiveDatadata: NSData)Objective C
- (void)URLSession:(NSURLSession *)sessiondataTask:(NSURLSessionDataTask *)dataTaskdidReceiveData:(NSData *)dataПараметры
sessionСеанс, содержащий задачу данных те предоставленные данные.
dataTaskЗадача данных те предоставленные данные.
dataОбъект данных, содержащий переданные данные.
Обсуждение
Поскольку
NSDataобъект часто соединяется от многих различных объектов данных, когда это возможно, используйте NSData’senumerateByteRangesUsingBlock:метод для итерации через данные вместо того, чтобы использоватьbytesметод (который сглаживаетсяNSDataобъект в единственный блок памяти).Этот метод делегата можно вызвать несколько раз, и каждый вызов предоставляет только данные, полученные начиная с предыдущего вызова. Приложение ответственно за накопление этих данных в случае необходимости.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 7.0 и позже.
-
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 *)sessiondataTask:(NSURLSessionDataTask *)dataTaskwillCacheResponse:(NSCachedURLResponse *)proposedResponsecompletionHandler:(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Доступность
Доступный в iOS 7.0 и позже.
-
Константы, указывающие, как данные или сеанс загрузки должны продолжиться после получения начальных заголовков.
Объявление
Swift
enum NSURLSessionResponseDisposition : Int { case Cancel case Allow case BecomeDownload }Objective C
typedef NS_ENUM (NSInteger, NSURLSessionResponseDisposition ) { NSURLSessionResponseCancel = 0, NSURLSessionResponseAllow = 1, NSURLSessionResponseBecomeDownload = 2 };Константы
-
CancelNSURLSessionResponseCancelОтмените загрузку. Эквивалентный вызову
cancelна задаче.Доступный в iOS 7.0 и позже.
-
AllowNSURLSessionResponseAllowПозвольте работе загрузки продолжаться.
Доступный в iOS 7.0 и позже.
-
BecomeDownloadNSURLSessionResponseBecomeDownloadПреобразуйте этот запрос в задачу загрузки.
Доступный в iOS 7.0 и позже.
Обсуждение
Данные или задача загрузки
URLSession:dataTask:didReceiveResponse:completionHandler:метод делегата передает эти константы предоставленному блоку обработчика завершения.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 7.0 и позже.
-
