NSURLRequest объекты представляют запрос загрузки URL способом, независимым от схемы URL и протокола.
NSURLRequest инкапсулирует два элемента исходных данных запроса загрузки: URL для загрузки, и политика использовать при консалтинге с кэшем содержания URL сделал доступным реализацией.
NSURLRequest разработан, чтобы быть расширенным для поддержки дополнительных протоколов путем добавления категорий, обеспечивающих методы доступа для собственных специфичных для протокола свойств. Те методы могут получить и установить фактические значения путем вызова NSURLProtocol методы propertyForKey:inRequest: и setProperty:forKey:inRequest:.
Тип сетевой службы обеспечивает подсказку для операционной системы о том, для чего используется базовый трафик. Эта подсказка улучшает возможность системы приоритезировать трафик, определить, как быстро это должно разбудить сотовую связь или радио Wi-Fi и т.д. Путем предоставления точной информации Вы улучшаете возможность системы оптимально сбалансировать время работы от батареи, производительность и другие соображения.
Например, необходимо указать NSURLNetworkServiceTypeBackground введите, если Ваше приложение выполняет загрузку, которую не требовал пользователь — например, выбирая содержание с упреждением так, чтобы это было доступно, когда пользователь примет решение просмотреть его.
nil если не был установлен поток организации. Возвращенный поток для исследования только — не безопасно управлять потоком всегда.
Получатель будет иметь или Тело HTTP или поток Тела HTTP, только один может быть установлен для запроса. Поток Тела HTTP сохраняется при копировании NSURLRequest когда запрос архивируется с помощью, объект, но потерян NSCoding протокол.
Эти константы используются для указания взаимодействия с кэшируемыми ответами.
Объявление
Swift
enum NSURLRequestCachePolicy : UInt { case UseProtocolCachePolicy case ReloadIgnoringLocalCacheData case ReloadIgnoringLocalAndRemoteCacheData case ReturnCacheDataElseLoad case ReturnCacheDataDontLoad case ReloadRevalidatingCacheData }
Указывает, что кэширующаяся логика, определенная в реализации протокола, если таковые имеются, используется для определенного запроса загрузки URL. Это - политика по умолчанию для запросов загрузки URL. Эта политика описана далее в обсуждении ниже.
Доступный в OS X v10.2 и позже.
ReloadIgnoringLocalCacheData
NSURLRequestReloadIgnoringLocalCacheData
Указывает, что данные для загрузки URL должны быть загружены из инициирующего источника. Никакие существующие данные кэша не должны использоваться для удовлетворения запроса загрузки URL.
Доступный в OS X v10.5 и позже.
ReturnCacheDataElseLoad
NSURLRequestReturnCacheDataElseLoad
Указывает, что существующие кэшированные данные должны использоваться для удовлетворения запроса, независимо от его возраста или даты истечения срока. Если нет никаких существующих данных в кэше, соответствующем запрос, данные загружаются из инициирующего источника.
Доступный в OS X v10.2 и позже.
ReturnCacheDataDontLoad
NSURLRequestReturnCacheDataDontLoad
Указывает, что существующие данные кэша должны использоваться для удовлетворения запроса, независимо от его возраста или даты истечения срока. Если нет никаких существующих данных в кэше, соответствующем запросу загрузки URL, никакая попытка не предпринята для загрузки данных из инициирующего источника, и загрузка, как полагают, перестала работать. Эта константа указывает поведение, которое подобно «оффлайновому» режиму.
Доступный в OS X v10.2 и позже.
Обсуждение
Для протокола HTTP, поведения NSURLRequestUseProtocolCachePolicy политика показана в дереве решений NSURLRequestUseProtocolCachePolicy для HTTP и HTTPS.
Дерево решений рисунка 1NSURLRequestUseProtocolCachePolicy для HTTP и HTTPS
Кратко помещенный:
Если кэшируемый ответ не существует для запроса, загрузочная система URL выбирает данные из инициирующего источника.
Иначе, если кэшируемый ответ не указывает, что должен быть подтвержден каждый раз, и если кэшируемый ответ не является устаревшим (мимо его даты истечения срока), загрузочная система URL возвращает кэшируемый ответ.
Если кэшируемый ответ является устаревшим или требует придания вновь юридической силы, загрузочная система URL выполняет запрос HEAD к инициирующему источнику, чтобы видеть, изменился ли ресурс. Если так, загрузочная система URL выбирает данные из инициирующего источника. Иначе, это возвращает кэшируемый ответ.
Эти константы используются для указания типа сетевой службы запроса.
Объявление
Swift
enum NSURLRequestNetworkServiceType : UInt { case NetworkServiceTypeDefault case NetworkServiceTypeVoIP case NetworkServiceTypeVideo case NetworkServiceTypeBackground case NetworkServiceTypeVoice }
Указывает стандартный сетевой трафик. Большинство соединений должно быть сделано с помощью этого типа службы.
Доступный в OS X v10.7 и позже.
NetworkServiceTypeVoIP
NSURLNetworkServiceTypeVoIP
Указывает, что запрос для трафика VoIP.
С типом службы VoIP ядро продолжает прислушиваться к входящему трафику, в то время как Ваше приложение в фоновом режиме, затем будит Ваше приложение каждый раз, когда поступают новые данные. Это должно использоваться только для соединений, использующихся для передачи со службой VoIP.
Доступный в OS X v10.7 и позже.
NetworkServiceTypeVideo
NSURLNetworkServiceTypeVideo
Указывает, что запрос для видеотрафика.
Доступный в OS X v10.7 и позже.
NetworkServiceTypeBackground
NSURLNetworkServiceTypeBackground
Указывает, что запрос для фонового трафика.
Необходимо указать этот тип, если приложение выполняет загрузку, которую не требовал пользователь — например, выбирая содержание с упреждением так, чтобы это было доступно, когда пользователь примет решение просмотреть его.
Доступный в OS X v10.7 и позже.
NetworkServiceTypeVoice
NSURLNetworkServiceTypeVoice
Указывает, что запрос для голосового трафика.
Доступный в OS X v10.7 и позже.
Обсуждение
Тип сетевой службы обеспечивает подсказку для операционной системы о том, для чего используется базовый трафик. Эта подсказка улучшает возможность системы приоритезировать трафик, определить, как быстро это должно разбудить сотовую связь или радио Wi-Fi и т.д. Путем предоставления точной информации Вы улучшаете возможность системы оптимально сбалансировать время работы от батареи, производительность и другие соображения.