0

Stack Overflowの質問からこのコードを使用しました:URLWithString:returns 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", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

コードにコピーしたときは問題はありませんでしたが、URLを使用するように変更すると、次の問題が発生しました。

フォーマット文字列で使用されないデータ引数。

しかし、それはうまく機能します。私のプロジェクトでは:

.h:

NSString *localisationName;

.m:

NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString* stringURL = [NSString stringWithFormat:@"http://en.wikipedia.org/wiki/Hősök_tere", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

[_webView loadRequest:[NSURLRequest requestWithURL:url]];

どうすればこれを解決できますか?私のコードに欠けているものはありますか?

4

2 に答える 2

1

元の文字列のinは、の値が挿入される@プレースホルダーとして使用されます。webNameあなたのコードでは、そのようなプレースホルダーがないのでwebName、文字列に入れるように指示していますが、どこにあるかは言っていません。

文字列に挿入したくない場合はwebName、コードの半分が冗長です。あなたに必要なのは:

NSString* stringURL = @"http://en.wikipedia.org/wiki/Hősök_tere";
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

[_webView loadRequest:[NSURLRequest requestWithURL:url]];
于 2013-01-17T13:28:26.933 に答える
0

この+stringWithFormat:メソッドは、指定されたフォーマット文字列をテンプレートとして使用して作成された文字列を返します。この文字列には、残りの引数値が代入されます。そして、最初のコードブロックで%@は、の値に置き換えられますwebName

変更したバージョンでは、フォーマットパラメータにフォーマット指定子@"http://en.wikipedia.org/wiki/Hősök_tere"が含まれていないため、

NSString* stringURL = [NSString stringWithFormat:@"http://en.wikipedia.org/wiki/Hősök_tere", webName];

ちょうどこのように実行されます(警告付きData argument not used by format string.

NSString* stringURL = @"http://en.wikipedia.org/wiki/Hősök_tere";

于 2013-01-17T13:37:59.217 に答える