2012-02-19 2 views
0

У меня есть список животных и специальная кнопка. Когда я нажимаю кнопку, я хотел бы пойти в Википедию и больше узнать об этом животном. Так что я написал этот код:Xcode openURL не читает ссылку

-(IBAction)goWiki:(id)sender 
{ 
    NSString *wikiUrl = "http://ru.wikipedia.org/wiki/"; 
    NSString *url = [NSString stringWithFormat:@"%@%@",wikiUrl,animalTitle]; 
    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:url]]; 
    NSLog(@"%@",url); 
} 

NSLog показывает, что URL написан правильно, однако, ничего не произошло. Я на 99,9% уверен, что он из-за animalTitle. Мой родной язык русский, и animalTitle - также животное имя на русском языке. Так что, если ссылка похожа на http://ru.wikipedia.org/wiki/Frog ее штраф, и она работает, но если это похоже http://ru.wikipedia.org/wiki/Лягушка ничего не происходит. Любые идеи, как я могу перейти к русской статье? Спасибо!

+2

Это не способ построения URL. Всегда начинайте с NSURL и используйте такие методы, как URLByAppendingPathComponent :. Не вставляйте косые черты вручную. Не помещайте «http: //» вручную. Если вы создали URL-адрес с 'initWithScheme: host: path:', как вы и должны были делать, эта проблема, вероятно, никогда не возникла бы. – matt

+0

Хорошо, спасибо за ваш ответ, я попробую это. – SmartTree

ответ

3

stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding использование следующим образом -

-(IBAction)goWiki:(id)sender 
{ 
    NSString *wikiUrl = @"http://ru.wikipedia.org/wiki/"; 
    NSString *url = [NSString stringWithFormat:@"%@%@",wikiUrl,animalTitle]; 


    url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    [[UIApplication sharedApplication]openURL:[NSURL URLWithString:url]]; 
    NSLog(@"%@",url); 
} 
+0

Этот код работает отлично! Большое спасибо! – SmartTree

1

Попробуйте передать строку animalTitle через CFURLCreateStringByAddingPercentEscapes.

Смежные вопросы