Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы основы ссылка на протокол NSURLSessionDataDelegate

Опции
Развертывание Target:

На этой странице
Язык:

NSURLSessionDataDelegate

Наследование


Не применимый

Оператор импорта


Swift

import Foundation

Objective C

@import Foundation;

Доступность


Доступный в iOS 7.0 и позже.

NSURLSessionDataDelegate протокол определяет методы что делегат NSURLSession объект может реализовать для обработки событий уровня задачи, определенных для задач данных и задач загрузки. Ваш делегат сеанса должен также реализовать методы в NSURLSessionTaskDelegate протокол для обработки событий уровня задачи, которые характерны для всех типов задачи и методов в NSURLSessionDelegate протокол для обработки событий сеансового уровня.

  • Говорит делегату, что задача данных получила начальный ответ (заголовки) от сервера.

    Объявление

    Swift

    optional func URLSession(_ session: NSURLSession, dataTask dataTask: NSURLSessionDataTask, didReceiveResponse response: NSURLResponse, completionHandler completionHandler: (NSURLSessionResponseDisposition) -> Void)

    Objective C

    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler

    Параметры

    session

    Сеанс, содержащий задачу данных, получившую начальный ответ.

    dataTask

    Задача данных, получившая начальный ответ.

    response

    Объект ответа URL заполняется с заголовками.

    completionHandler

    Обработчик завершения, который Ваш код вызывает для продолжения передачи, передавая константу, чтобы указать, должна ли передача продолжаться как задача данных или должна стать задачей загрузки.

    Обсуждение

    Этот метод является дополнительным, если Вы не должны поддерживать (относительно неясный) multipart/x-mixed-replace тип контента. С тем типом контента сервер отправляет серию частей, каждая из которых предназначается для замены предыдущей части. Сеанс вызывает этот метод в начале каждой части, и необходимо тогда вывести на экран, отбросить, или иначе обработать предыдущую часть, как надлежащую.

    Если Вы не обеспечиваете этот метод делегата, сеанс всегда позволяет задаче продолжаться.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 7.0 и позже.

  • Говорит делегату, что задача данных была изменена на задачу загрузки.

    Объявление

    Swift

    optional func URLSession(_ session: NSURLSession, dataTask dataTask: NSURLSessionDataTask, didBecomeDownloadTask downloadTask: 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

    Доступность

    Доступный в iOS 7.0 и позже.

  • Говорит делегату, что задача данных получила некоторые ожидаемые данные.

    Объявление

    Swift

    optional func URLSession(_ session: NSURLSession, dataTask dataTask: NSURLSessionDataTask, didReceiveData data: NSData)

    Objective C

    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data

    Параметры

    session

    Сеанс, содержащий задачу данных те предоставленные данные.

    dataTask

    Задача данных те предоставленные данные.

    data

    Объект данных, содержащий переданные данные.

    Обсуждение

    Поскольку NSData объект часто соединяется от многих различных объектов данных, когда это возможно, используйте NSData’s enumerateByteRangesUsingBlock: метод для итерации через данные вместо того, чтобы использовать bytes метод (который сглаживается NSData объект в единственный блок памяти).

    Этот метод делегата можно вызвать несколько раз, и каждый вызов предоставляет только данные, полученные начиная с предыдущего вызова. Приложение ответственно за накопление этих данных в случае необходимости.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 7.0 и позже.

  • Спрашивает делегат, должны ли данные (или загрузка) задача сохранить ответ в кэше.

    Объявление

    Swift

    optional func URLSession(_ session: NSURLSession, dataTask dataTask: NSURLSessionDataTask, willCacheResponse proposedResponse: NSCachedURLResponse, completionHandler completionHandler: (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

    Доступность

    Доступный в 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 };

    Константы

    • Cancel

      NSURLSessionResponseCancel

      Отмените загрузку. Эквивалентный вызову cancel на задаче.

      Доступный в iOS 7.0 и позже.

    • Allow

      NSURLSessionResponseAllow

      Позвольте работе загрузки продолжаться.

      Доступный в iOS 7.0 и позже.

    • BecomeDownload

      NSURLSessionResponseBecomeDownload

      Преобразуйте этот запрос в задачу загрузки.

      Доступный в iOS 7.0 и позже.

    Обсуждение

    Данные или задача загрузки URLSession:dataTask:didReceiveResponse:completionHandler: метод делегата передает эти константы предоставленному блоку обработчика завершения.

    Оператор импорта

    Objective C

    @import Foundation;

    Swift

    import Foundation

    Доступность

    Доступный в iOS 7.0 и позже.