Манипулирование URL - лучший способ - PullRequest
0 голосов
/ 25 марта 2011

У меня есть URL-адрес изображения, с которого мне нужно получить изображения.

Но прежде чем перейти к URL-адресу, мне нужно манипулировать им.Например:

URL: - http://www.myimages.com/XYZ?wid=50&hei=55&fmt=jpeg&qlt=95&op_sharpen=0&resMode=bicub

Я получаю этот URL с сервера.Как мне лучше всего поиграть с этими параметрами, добавить их обратно с обновленными значениями и перейти на вновь созданный URL?

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Если вам нужно заменить параметры get, вы можете сохранить эту строку URL в изменяемой строке, а затем искать шаблоны &yourvar= или ?yourvar=, используя rangeOfString, а затем определить, где заканчивается значение этой переменной, и заменить это.значение.

ИЛИ, я бы, вероятно, разделил его, используя comps = [URLstring componentsSeparatedByString:@"?"], затем getParams = [NSMutableArray arrayWithArray:[[comps objectAtIndex:1] componentsSeparatedByString:@"&"]] и, наконец, перебрал бы getParams и var = [NSMutableArray arrayWithArray:[[getParams objectAtIndex:counter] componentsSeparatedByString:@"="]].

Первый шаг разделяется между URI и GETпараметры.Второй шаг разбивает параметры GET.Третий шаг дает вам доступ к каждому из имен параметров и их значений.Вы можете изменить переменные, которые вы хотите изменить на этом шаге, если они соответствуют вашему поиску.

Когда вы завершите каждый из этапов обработки, вам необходимо сохранить результат для каждого из них, используя, например, [var componentsJoinedByString:@"&"].

0 голосов
/ 26 февраля 2014

Если вы используете iOS7, вы можете использовать NSURLComponents, посмотрите этот пример:

NSString *urlString = @"https://mail.google.com/mail/u/0";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];
[components setQuery:@"shva=1"];

Другие примеры:

//Example One
NSString *urlString = @"https://mail.google.com/mail/u/0/?shva=1#inbox";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];

NSLog(@"%@ - %@ - %@ - %@", components.scheme, components.host, components.query, components.fragment);

//Example Two
NSString *urlString = @"https://mail.google.com/mail/u/0/?shva=1#inbox";
NSURLComponents *components = [[NSURLComponents alloc] initWithString:urlString];

if (components) {
    //good URL
} else {
    //bad URL
}

//Example three
NSURLComponents *components = [NSURLComponents new];
[components setScheme:@"https"];
[components setHost:@"mail.google.com"];
[components setQuery:@"shva=1"];
[components setFragment:@"inbox"];
[components setPath:@"/mail/u/0/"];

[self.webview loadRequest:[[NSURLRequest alloc] initWithURL:[components URL]]];

Но с помощью NSURLComponents вы можете делать много других вещей, проверять открытый интерфейс NSURLComponents, официальная документация пока недоступна в Интернете.

0 голосов
/ 25 марта 2011

Если ваш url-адрес фиксирован, то просто задать вопрос:

NSString * string = [NSString stringWithFormat: ...];метод поможет.Но мне кажется, что ваш URL тоже не фиксированный.Это и есть причина, по которой вы отправили вопрос.

Вы можете попытаться получить индекс символов "=" и "&".Затем вы можете использовать методы объекта класса NSString, чтобы получить подстроки, которые вы можете заменить своими значениями, которые снова будут строками.

или вы можете преобразовать строку в const char * и затем попытаться манипулировать ею.

...