NSURL возвращает ноль, stringByAddingPercent ... возвращает ночной кошмар - PullRequest
0 голосов
/ 20 июля 2011

Я постараюсь быть быстрым, я все еще довольно нов, но обычно я могу разобраться, эта проблема сводит меня с ума. У меня есть XML на веб-сайте, я разбираю его в таблице, щелкаю по элементу, загружаю ссылку в веб-представление и начинаю проблему ...

    -(void)viewDidLoad {
NSString *str = [NSString stringWithFormat:@"%@", [item objectForKey:@"link"]];
NSURL *url = [NSURL URLWithString = str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest = request];
}

Если вы NSLog * str, это хорошо. Если у вас NSLog URL, то он нулевой. Проблема, очевидно, заключается в использовании objectForKey, потому что в остальном все остальное работает. Теперь, если я

NSURL *url = [NSURL URLWithString = [str stringByAddingPercentEscapesUsingEncoding:...

добавляя NSUTF или NSASCII, NSLog для URL добавляет

%0A%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20

до конца моего значения. Таким образом, если бы значение было aq1sw2de3, nslog был бы

aq1sw2de3%0A%20%20 etc.

Я только что напечатал это, посмотрев на экран Mac, предположив, что в коде нет всех орфографических ошибок. Я пробовал так много разных способов передачи этого URL в webView, но мои результаты либо NULL, либо все эти чертовы бредни. Я трачу свое время на то, что не могу сделать? Я поступаю неправильно? Я искал часы, и все проблемы, которые я вижу, связаны с форматированием строки или URL, которые они передают (пробелы и |, вызывающие ошибки), но мои значения ссылок - от A до Z и от 0 до 9.

Ответы [ 3 ]

1 голос
/ 20 июля 2011

Почему-то ваша строка набирает лишние пробелы. Если вам просто нужно обрезать его, попробуйте:

NSURL *url = [NSURL URLWithString:
             [[str stringByAddingPercentEscapesUsingEncoding: NSUTF8Encoding]        
             stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
1 голос
/ 20 июля 2011

"% 20" и "% 0A" - это escape-последовательности в процентах для пробела и символа табуляции соответственно.Проверьте, есть ли в конце строки лишние пробелы.

0 голосов
/ 20 июля 2011

Скотт прав.Посмотрите на NSCharacterSet для постоянного набора символов пробела, который вы можете использовать, чтобы обрезать вашу строку.Вы можете использовать вызов NSString stringByTrimmingCharactersInSet с пропуском, установленным для удаления нежелательных символов.

...