2012-02-19 4 views
0

私は動物リストと特別なボタンを持っています。私がボタンを押すと、私はWikipediaに行き、この動物についてもっと読むことを望みます。だから私はこのコードを書いた: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://」を入力しないでください。 'initWithScheme:host:path:'でURLを構築していたのなら、おそらくこの問題は起こりませんでした。 – 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に渡してみてください。

関連する問題