2011-07-25 6 views
0

私はデフォルトマップアプリケーションを呼び出しています。私のアプリケーションからは、例えば、私は現在の場所NSURLのリターンnilのために私のiPhoneの上でポルトガル語を選択したとき。 次のように私はすでにUTF8encodingとパーセンテージのカプセル化を使用: -英語以外のiPhone言語を選択しているときはNsurl return nil

NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
    //where urlString has value http://maps.google.com/maps?saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857 
NSURL *URL = [NSURL URLWithString:encodedURLString]; 
[[UIApplication sharedApplication] openURL:URL]; 

私はすでにNSUTF8EncodingではなくNSASCIIStringEncodingてみたが、何も助けません。助けを借りれば さん、ありがとうございます。

+0

あなたはそれをコードした後、それからURLを作成する前に、文字列の値をプリントアウトしてみましたか? URL文字列全体をエンコードするのが奇妙です。通常、リクエストデータをエンコードするだけです。 – Perception

答えて

1

URL全体をパーセントエンコードします。

この結果、http://www.google.comhttp%3A//www.google.comになります。これは不正な形式のURLです。 NSURLクラスリファレンスから

戻り値:URLStringで初期化アンNSURLオブジェクト。文字列が不正な場合はnilを返します。

エルゴ、あなたはゼロを受け取っています。あなたが何をしたいか

はこれです:

NSString *path = @"http://maps.google.com/maps"; 
NSString *query = @"saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857"; 
query = [query stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding]; 

NSString *url = [NSString stringWithFormat: @"%@?%@", path, query]; 
NSURL *URL = [NSURL URLWithString: url]; 
[[UIApplication sharedApplication] openURL: URL]; 
関連する問題