NSURLConnection
NSURLConnection
объект позволяет Вам загрузить содержание URL путем обеспечения объекта URL-запроса. Интерфейс для NSURLConnection
редко, обеспечивая только средства управления, чтобы запустить и отменить асинхронные загрузки URL-запроса. Вы выполняете большую часть своей конфигурации на самом объекте URL-запроса.
NSURLConnection
класс обеспечивает методы класса удобства загрузить URL-запросы и асинхронно использование блока обратного вызова и синхронно.
Для большего управления можно создать объект соединения URL с объектом делегата, соответствующим NSURLConnectionDelegate
и NSURLConnectionDataDelegate
протоколы. Соединение вызывает методы на том делегате для обеспечения Вас прогрессом и состоянием, поскольку URL-запрос загружается асинхронно. Соединение также вызывает методы делегата позволить Вам переопределить поведение соединения по умолчанию (например, указывая, как определенное перенаправление должно быть обработано). Эти методы делегата вызывают на потоке, инициировавшем асинхронную работу загрузки.
Для получения дополнительной информации об ошибках, посмотрите NSURLError.h
заголовок, Ссылка Констант Основы, и URL Loading System Error Codes
в руководстве по программированию обработки ошибок.
Протоколы NSURLConnection
NSURLConnection
класс работает в тандеме с тремя формальными протоколами: NSURLConnectionDelegate
, NSURLConnectionDataDelegate
, и NSURLConnectionDownloadDelegate
. Для использования этих протоколов Вы пишете класс, соответствующий им, и реализуйте любые методы, которые являются надлежащими, затем обеспечивают экземпляр того класса как делегат, когда Вы создаете объект соединения.
NSURLConnectionDelegate
протокол прежде всего используется для учетной обработки, но также и обрабатывает завершение соединения. Поскольку это обрабатывает сбой соединения во время передачи данных, все делегаты соединения должны обычно реализовывать этот протокол.
Кроме того, если Вы не используете Ньюсстэнда Кита, Ваш делегат должен также соответствовать NSURLConnectionDataDelegate
протокол, потому что этот протокол обеспечивает методы что NSURLConnection
если ответ сервера требует второй попытки подключения — например, если, класс вызывает с информацией о прогрессе во время загрузки с фрагментами данных ответа во время загрузки, и обеспечить поток организации новой закачки NSURLConnection
должен повторить запрос с различными учетными данными.
Наконец, если Вы используете Ньюсстэнда Кита, Ваш делегат может соответствовать NSURLConnectionDownloadDelegate
протокол. Этот протокол предоставляет поддержку для продолжения прерванных загрузок файла и получения уведомления каждый раз, когда заканчивается загрузка. Этот протокол исключительно для использования с NSURLConnection
объекты создали использование Ньюсстэнда Кита downloadWithDelegate:
метод.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в Mac OS X v10.2 с установленным Safari 1.0.
Доступный в Mac OS X v10.2.7 и позже.
-
Возвраты, может ли запрос быть обработан на основе оценки перед рейсом.
Объявление
Swift
class func canHandleRequest(_
request
: NSURLRequest) -> BoolObjective C
+ (BOOL)canHandleRequest:(NSURLRequest *)
request
Параметры
request
Запрос для оценки. Глубокие копии соединения запрос на создании.
Возвращаемое значение
YES
true
если работа перед рейсом решает что соединение сrequest
может быть создан и связанный I/O может быть запущен,NO
false
иначе.Обсуждение
Результат этого метода допустим настолько же долго как нет
NSURLProtocol
классы регистрируются или не зарегистрированы, иrequest
остается неизменным. Приложения должны быть подготовлены обработать отказы, даже если они выполнили запрос preflighting путем вызова этого метода.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
См. также
-
originalRequest originalRequest
СвойствоГлубокая копия запроса первоначального соединения. (только для чтения)
Объявление
Swift
@NSCopying var originalRequest: NSURLRequest { get }
Objective C
@property(readonly, copy) NSURLRequest *originalRequest
Обсуждение
Поскольку соединение выполняет загрузку, запрос может измениться в результате канонизации протокола или вследствие следующих перенаправлений.
currentRequest
может использоваться для получения этого значения.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
currentRequest currentRequest
СвойствоТекущий запрос на установление соединения. (только для чтения)
Объявление
Swift
@NSCopying var currentRequest: NSURLRequest { get }
Objective C
@property(readonly, copy) NSURLRequest *currentRequest
Обсуждение
Поскольку соединение выполняет загрузку, запрос может измениться в результате канонизации протокола или вследствие следующих перенаправлений. Это свойство обеспечивает текущую стоимость запроса.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
sendSynchronousRequest (_: returningResponse:error:) + sendSynchronousRequest:returningResponse:error:
Выполняет синхронную загрузку указанного URL-запроса.
Объявление
Swift
class func sendSynchronousRequest(_
request
: NSURLRequest, returningResponseresponse
: AutoreleasingUnsafeMutablePointer<NSURLResponse?>, errorerror
: NSErrorPointer) -> NSData?Objective C
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)
request
returningResponse:(NSURLResponse **)response
error:(NSError **)error
Параметры
request
URL-запрос для загрузки.
request
объект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequest
после этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.response
Параметр для ответа URL, возвращенного сервером.
error
Если ошибка происходит при обработке запроса, параметр использовал. Может быть
NULL
.Возвращаемое значение
Загруженные данные для URL-запроса. Возвраты
nil
если загрузка перестала работать, если соединение не могло бы быть создано или.Обсуждение
Синхронная загрузка создается поверх асинхронного кода загрузки, сделанного доступный классом. В то время как асинхронная загрузочная система выполняет нагрузку URL на поток, порожденный в частности для этого запроса загрузки, вызывающий поток блокируется. Никакая специальная поточная обработка или выполненное петлевое соединение не необходимы в вызывающем потоке для выполнения синхронной загрузки.
Если аутентификация требуется для загрузки запроса, требуемые учетные данные должны быть указаны как часть URL. Если аутентификация перестанет работать, или учетные данные отсутствуют, то соединение попытается продолжаться без учетных данных.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Создает и возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса.
Объявление
Objective C
+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)
request
delegate:(id)delegate
Параметры
request
URL-запрос для загрузки.
request
объект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequest
после этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegate
Объект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка. Методы делегата вызывают на том же потоке который названные этим методом. Для соединения для работы правильно цикл выполнения вызывающего потока должен работать в выполненном режиме цикла по умолчанию.
Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nil
если не может быть создано соединение.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate
. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.2 и позже.
См. также
-
Возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса.
Объявление
Swift
init?(request
request
: NSURLRequest, delegatedelegate
: AnyObject?)Objective C
- (instancetype)initWithRequest:(NSURLRequest *)
request
delegate:(id)delegate
Параметры
request
URL-запрос для загрузки.
request
объект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequest
после этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegate
Объект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка. Методы делегата вызывают на том же потоке который названные этим методом. По умолчанию, для соединения для работы правильно цикл выполнения вызывающего потока должен работать в выполненном режиме цикла по умолчанию. Посмотрите
scheduleInRunLoop:forMode:
изменить цикл выполнения и режим.Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nil
если не может быть инициализировано соединение.Обсуждение
Это эквивалентно вызову
initWithRequest:delegate:startImmediately:
и передачаYES
true
дляstartImmediately
.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate
. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса, если указано.
Объявление
Swift
init?(request
request
: NSURLRequest, delegatedelegate
: AnyObject?, startImmediatelystartImmediately
: Bool)Objective C
- (instancetype)initWithRequest:(NSURLRequest *)
request
delegate:(id)delegate
startImmediately:(BOOL)startImmediately
Параметры
request
URL-запрос для загрузки.
request
объект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequest
после этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegate
Объект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка.
startImmediately
YES
true
если соединение должно начать загружать данные сразу, иначеNO
false
. Если Вы передаетеNO
false
, соединение не планируется с циклом выполнения. Можно тогда запланировать соединение в цикле выполнения и режиме по Вашему выбору путем вызоваscheduleInRunLoop:forMode:
.Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nil
если не может быть инициализировано соединение.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate
. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
sendAsynchronousRequest (_: queue:completionHandler:) + sendAsynchronousRequest:queue:completionHandler:
Когда запрос завершается или перестал работать, загружает данные для URL-запроса и выполняет блок обработчика на очереди работы.
Объявление
Swift
class func sendAsynchronousRequest(_
request
: NSURLRequest, queuequeue
: NSOperationQueue!, completionHandlerhandler
: (NSURLResponse!, NSData!, NSError!) -> Void)Objective C
+ (void)sendAsynchronousRequest:(NSURLRequest *)
request
queue:(NSOperationQueue *)queue
completionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handler
Параметры
request
URL-запрос для загрузки.
request
объект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequest
после этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.queue
Очередь работы, которой диспетчеризируется блок обработчика, когда запрос завершается или отказавший.
handler
Блок обработчика для выполнения.
Обсуждение
Если запрос завершается успешно,
data
параметр блока обработчика содержит данные ресурсов, иerror
параметрnil
. Если запрос перестал работать,data
параметрnil
и параметр ошибок содержит информацию об отказе.Если аутентификация требуется для загрузки запроса, требуемые учетные данные должны быть указаны как часть URL. Если аутентификация перестанет работать, или учетные данные отсутствуют, то соединение попытается продолжаться без учетных данных.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Заставляет соединение начинать загружать данные, если это уже не имеет.
Объявление
Swift
func start()
Objective C
- (void)start
Обсуждение
Вызов этого метода необходим, только если Вы создаете соединение с
initWithRequest:delegate:startImmediately:
метод и обеспечиваетNO
false
дляstartImmediately
параметр. Если Вы не запланируете соединение в цикле выполнения или очереди работы прежде, чем вызвать этот метод, то соединение планируется в текущем цикле выполнения в режиме по умолчанию.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Отменяет асинхронную загрузку запроса.
Объявление
Swift
func cancel()
Objective C
- (void)cancel
Обсуждение
После того, как этот метод вызывают, соединение не выполняет дальнейших вызовов метода делегата. Если Вы хотите повторно делать попытку соединения, необходимо создать новый объект соединения.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.2 и позже.
-
Определяет цикл выполнения и режим что использование соединения для вызова методов на его делегате.
Объявление
Параметры
aRunLoop
NSRunLoop
экземпляр для использования при вызове методов делегата.mode
Режим, в котором можно вызвать методы делегата.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:
метод и обеспечиваетNO
false
дляstartImmediately
параметр, можно запланировать соединение на различный цикл выполнения или режим прежде, чем запустить его сstart
метод. Можно запланировать соединение на многократные циклы выполнения и режимы, или на тот же цикл выполнения в многократных режимах.Вы не можете перепланировать соединение после того, как оно запустилось.
Это - ошибка запланировать вызовы метода делегата и с этим методом и с
setDelegateQueue:
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.
-
Определяет очередь работы, использующуюся для вызова методов на делегате соединения.
Объявление
Swift
func setDelegateQueue(_
queue
: NSOperationQueue!)Objective C
- (void)setDelegateQueue:(NSOperationQueue *)
queue
Параметры
queue
Очередь работы для использования при вызове методов делегата.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:
метод и обеспечиваетNO
false
дляstartImmediately
параметр, можно вместо этого запланировать соединение на очередь работы прежде, чем запустить его сstart
метод.Вы не можете перепланировать соединение после того, как оно запустилось.
Это - ошибка запланировать вызовы метода делегата и с этим методом и с
scheduleInRunLoop:forMode:
метод.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Заставляет соединение прекращать вызывать методы делегата в указанном цикле выполнения и режиме.
Объявление
Параметры
aRunLoop
Экземпляр цикла выполнения, чтобы не запланировать.
mode
Режим, чтобы не запланировать.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:
метод и обеспечиваетNO
false
дляstartImmediately
параметр, можно вместо этого запланировать соединение на различный цикл выполнения или режим прежде, чем запустить его сstart
метод. Можно запланировать соединение на многократные циклы выполнения и режимы, или на тот же цикл выполнения в многократных режимах. Используйте этот метод, чтобы не запланировать соединение от нежелательного цикла выполнения и режима прежде, чем запустить соединение.Вы не можете перепланировать соединение после того, как оно запустилось. Не необходимо не запланировать соединение после того, как это закончилось.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.5 и позже.