В iOS 8 и OS X 10.10 появился NSURLQueryItem
, который можно использовать для создания запросов. Из документов на NSURLQueryItem:
Объект NSURLQueryItem представляет одну пару имя/значение для элемента в части запроса URL-адреса. Вы используете элементы запроса со свойством queryItems объекта NSURLComponents.
Вы можете получить элементы запроса из URL-адреса, сначала создав NSURLComponents
:
NSURL *url = [NSURL URLWithString:@"http://stackoverflow.com?q=ios&count=10"];
NSURLComponents *components = [NSURLComponents componentsWithURL:url
resolvingAgainstBaseURL:YES];
for (NSURLQueryItem *item in components.queryItems) {
NSLog(@"name: %@, value: %@", item.name, item.value);
}
// name: q, value: ios
// name: count, value: 10
Обратите внимание, что они возвращают значение для -queryItems
, это массив, а не словарь. Это связано с тем, что следующий URL-адрес является допустимым. Обратите внимание на два одинаковых «ключа», foo
.
http://google.com?foo=bar&foo=baz
Чтобы создать URL-адрес с помощью элементов запроса, используйте назначенный инициализатор queryItemWithName:value:
, а затем добавьте их в NSURLComponents
для создания файла NSURL
. Например:
NSString *urlString = @"http://stackoverflow.com";
NSURLComponents *components = [NSURLComponents componentsWithString:urlString];
NSURLQueryItem *search = [NSURLQueryItem queryItemWithName:@"q" value:@"ios"];
NSURLQueryItem *count = [NSURLQueryItem queryItemWithName:@"count" value:@"10"];
components.queryItems = @[ search, count ];
NSURL *url = components.URL; // http://stackoverflow.com?q=ios&count=10
Обратите внимание, что вопросительный знак и амперсанд обрабатываются автоматически. Создать NSURL
из словаря параметров так же просто, как:
NSDictionary *queryDictionary = @{ @"q": @"ios", @"count": @"10" };
NSMutableArray *queryItems = [NSMutableArray array];
for (NSString *key in queryDictionary) {
NSURLQueryItem *item = [NSURLQueryItem queryItemWithName:key
value:queryDictionary[key]];
[queryItems addObject:item];
}
components.queryItems = queryItems;
Я также написал сообщение в блоге с более подробной информацией, Создание NSURL с помощью NSURLQueryItems.
person
Joe Masilotti
schedule
28.07.2015