1. ホーム
  2. iphone

[解決済み] URLWithString: nil を返す

2023-02-17 16:01:31

質問

とても簡単なことだと思うのですが、なぜそうなるのかがわかりません。 URLWithString: はここでnilを返しているのかがわからないようです。

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false&key=", webName];
NSURL* url = [NSURL URLWithString:stringURL];

どのように解決するのですか?

ハードコードされた URL の非 ASCII 文字もエスケープする必要があります。

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

localisationNameのエスケープは、文字列全体のエスケープで処理されるので、おそらく削除してよいでしょう。