NSURLConnection
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в iOS 2.0 и позже.
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
class func canHandleRequest(_request: NSURLRequest) -> BoolObjective C
+ (BOOL)canHandleRequest:(NSURLRequest *)requestПараметры
requestЗапрос для оценки. Глубокие копии соединения запрос на создании.
Возвращаемое значение
YEStrueесли работа перед рейсом решает что соединение сrequestможет быть создан и связанный I/O может быть запущен,NOfalseиначе.Обсуждение
Результат этого метода допустим настолько же долго как нет
NSURLProtocolклассы регистрируются или не зарегистрированы, иrequestостается неизменным. Приложения должны быть подготовлены обработать отказы, даже если они выполнили запрос preflighting путем вызова этого метода.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
См. также
-
originalRequestСвойствоГлубокая копия запроса первоначального соединения. (только для чтения)
Объявление
Swift
@NSCopying var originalRequest: NSURLRequest { get }Objective C
@property(readonly, copy) NSURLRequest *originalRequestОбсуждение
Поскольку соединение выполняет загрузку, запрос может измениться в результате канонизации протокола или вследствие следующих перенаправлений.
currentRequestможет использоваться для получения этого значения.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 5.0 и позже.
См. также
-
currentRequestСвойствоТекущий запрос на установление соединения. (только для чтения)
Объявление
Swift
@NSCopying var currentRequest: NSURLRequest { get }Objective C
@property(readonly, copy) NSURLRequest *currentRequestОбсуждение
Поскольку соединение выполняет загрузку, запрос может измениться в результате канонизации протокола или вследствие следующих перенаправлений. Это свойство обеспечивает текущую стоимость запроса.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 5.0 и позже.
См. также
-
sendSynchronousRequest (_: returningResponse:error:) + sendSynchronousRequest:returningResponse:error:Выполняет синхронную загрузку указанного URL-запроса.
Объявление
Swift
class func sendSynchronousRequest(_request: NSURLRequest, returningResponseresponse: AutoreleasingUnsafeMutablePointer<NSURLResponse?>, errorerror: NSErrorPointer) -> NSData?Objective C
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)requestreturningResponse:(NSURLResponse **)responseerror:(NSError **)errorПараметры
requestURL-запрос для загрузки.
requestобъект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequestпосле этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.responseПараметр для ответа URL, возвращенного сервером.
errorЕсли ошибка происходит при обработке запроса, параметр использовал. Может быть
NULL.Возвращаемое значение
Загруженные данные для URL-запроса. Возвраты
nilесли загрузка перестала работать, если соединение не могло бы быть создано или.Обсуждение
Синхронная загрузка создается поверх асинхронного кода загрузки, сделанного доступный классом. В то время как асинхронная загрузочная система выполняет нагрузку URL на поток, порожденный в частности для этого запроса загрузки, вызывающий поток блокируется. Никакая специальная поточная обработка или выполненное петлевое соединение не необходимы в вызывающем потоке для выполнения синхронной загрузки.
Если аутентификация требуется для загрузки запроса, требуемые учетные данные должны быть указаны как часть URL. Если аутентификация перестанет работать, или учетные данные отсутствуют, то соединение попытается продолжаться без учетных данных.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Создает и возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса.
Объявление
Objective C
+ (NSURLConnection *)connectionWithRequest:(NSURLRequest *)requestdelegate:(id)delegateПараметры
requestURL-запрос для загрузки.
requestобъект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequestпосле этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegateОбъект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка. Методы делегата вызывают на том же потоке который названные этим методом. Для соединения для работы правильно цикл выполнения вызывающего потока должен работать в выполненном режиме цикла по умолчанию.
Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nilесли не может быть создано соединение.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;Доступность
Доступный в iOS 2.0 и позже.
См. также
-
Возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса.
Объявление
Swift
init?(requestrequest: NSURLRequest, delegatedelegate: AnyObject?)Objective C
- (instancetype)initWithRequest:(NSURLRequest *)requestdelegate:(id)delegateПараметры
requestURL-запрос для загрузки.
requestобъект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequestпосле этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegateОбъект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка. Методы делегата вызывают на том же потоке который названные этим методом. По умолчанию, для соединения для работы правильно цикл выполнения вызывающего потока должен работать в выполненном режиме цикла по умолчанию. Посмотрите
scheduleInRunLoop:forMode:изменить цикл выполнения и режим.Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nilесли не может быть инициализировано соединение.Обсуждение
Это эквивалентно вызову
initWithRequest:delegate:startImmediately:и передачаYEStrueдляstartImmediately.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Возвращает инициализированное соединение URL и начинает загружать данные для URL-запроса, если указано.
Объявление
Swift
init?(requestrequest: NSURLRequest, delegatedelegate: AnyObject?, startImmediatelystartImmediately: Bool)Objective C
- (instancetype)initWithRequest:(NSURLRequest *)requestdelegate:(id)delegatestartImmediately:(BOOL)startImmediatelyПараметры
requestURL-запрос для загрузки.
requestобъект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequestпосле этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.delegateОбъект делегата для соединения. Соединение вызывает методы на этом делегате, в то время как развивается загрузка.
startImmediatelyYEStrueесли соединение должно начать загружать данные сразу, иначеNOfalse. Если Вы передаетеNOfalse, соединение не планируется с циклом выполнения. Можно тогда запланировать соединение в цикле выполнения и режиме по Вашему выбору путем вызоваscheduleInRunLoop:forMode:.Возвращаемое значение
Соединение URL для URL-запроса. Возвраты
nilесли не может быть инициализировано соединение.Специальные замечания
Во время загрузки соединение поддерживает сильную ссылку к
delegate. Когда соединение заканчивает загружаться, сбои, или отменяется, это выпускает ту сильную ссылку.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
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 *)requestqueue:(NSOperationQueue *)queuecompletionHandler:(void (^)(NSURLResponse *response, NSData *data, NSError *connectionError))handlerПараметры
requestURL-запрос для загрузки.
requestобъект глубоко скопирован как часть процесса инициализации. Изменения, внесенные вrequestпосле этого метода возвраты не влияют на запрос, использующийся для процесса загрузки.queueОчередь работы, которой диспетчеризируется блок обработчика, когда запрос завершается или отказавший.
handlerБлок обработчика для выполнения.
Обсуждение
Если запрос завершается успешно,
dataпараметр блока обработчика содержит данные ресурсов, иerrorпараметрnil. Если запрос перестал работать,dataпараметрnilи параметр ошибок содержит информацию об отказе.Если аутентификация требуется для загрузки запроса, требуемые учетные данные должны быть указаны как часть URL. Если аутентификация перестанет работать, или учетные данные отсутствуют, то соединение попытается продолжаться без учетных данных.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 5.0 и позже.
-
Заставляет соединение начинать загружать данные, если это уже не имеет.
Объявление
Swift
func start()Objective C
- (void)startОбсуждение
Вызов этого метода необходим, только если Вы создаете соединение с
initWithRequest:delegate:startImmediately:метод и обеспечиваетNOfalseдляstartImmediatelyпараметр. Если Вы не запланируете соединение в цикле выполнения или очереди работы прежде, чем вызвать этот метод, то соединение планируется в текущем цикле выполнения в режиме по умолчанию.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Отменяет асинхронную загрузку запроса.
Объявление
Swift
func cancel()Objective C
- (void)cancelОбсуждение
После того, как этот метод вызывают, соединение не выполняет дальнейших вызовов метода делегата. Если Вы хотите повторно делать попытку соединения, необходимо создать новый объект соединения.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Определяет цикл выполнения и режим что использование соединения для вызова методов на его делегате.
Объявление
Параметры
aRunLoopNSRunLoopэкземпляр для использования при вызове методов делегата.modeРежим, в котором можно вызвать методы делегата.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:метод и обеспечиваетNOfalseдляstartImmediatelyпараметр, можно запланировать соединение на различный цикл выполнения или режим прежде, чем запустить его сstartметод. Можно запланировать соединение на многократные циклы выполнения и режимы, или на тот же цикл выполнения в многократных режимах.Вы не можете перепланировать соединение после того, как оно запустилось.
Это - ошибка запланировать вызовы метода делегата и с этим методом и с
setDelegateQueue:метод.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
-
Определяет очередь работы, использующуюся для вызова методов на делегате соединения.
Объявление
Swift
func setDelegateQueue(_queue: NSOperationQueue!)Objective C
- (void)setDelegateQueue:(NSOperationQueue *)queueПараметры
queueОчередь работы для использования при вызове методов делегата.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:метод и обеспечиваетNOfalseдляstartImmediatelyпараметр, можно вместо этого запланировать соединение на очередь работы прежде, чем запустить его сstartметод.Вы не можете перепланировать соединение после того, как оно запустилось.
Это - ошибка запланировать вызовы метода делегата и с этим методом и с
scheduleInRunLoop:forMode:метод.Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 5.0 и позже.
-
Заставляет соединение прекращать вызывать методы делегата в указанном цикле выполнения и режиме.
Объявление
Параметры
aRunLoopЭкземпляр цикла выполнения, чтобы не запланировать.
modeРежим, чтобы не запланировать.
Обсуждение
По умолчанию соединение планируется на текущий поток в режиме по умолчанию, когда это будет создано. Если Вы создаете соединение с
initWithRequest:delegate:startImmediately:метод и обеспечиваетNOfalseдляstartImmediatelyпараметр, можно вместо этого запланировать соединение на различный цикл выполнения или режим прежде, чем запустить его сstartметод. Можно запланировать соединение на многократные циклы выполнения и режимы, или на тот же цикл выполнения в многократных режимах. Используйте этот метод, чтобы не запланировать соединение от нежелательного цикла выполнения и режима прежде, чем запустить соединение.Вы не можете перепланировать соединение после того, как оно запустилось. Не необходимо не запланировать соединение после того, как это закончилось.
Оператор импорта
Objective C
@import Foundation;Swift
import FoundationДоступность
Доступный в iOS 2.0 и позже.
