我使用了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];
当我将其复制到我的代码中时,没有任何问题,但当我修改它以使用我的网址时,我遇到了这个问题:
格式字符串未使用数据参数。
但它运作正常。在我的项目中:
·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]];
我该如何解决这个问题?我的代码中缺少什么东西?
答案 0 :(得分:1)
原始字符串中的@
用作占位符,其中插入了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]];
答案 1 :(得分:0)
+stringWithFormat:
方法return a string created by using a given format string as a template into which the remaining argument values are substituted。在第一个代码块中,%@
将替换为webName
的值。
在修改后的版本中, 格式 参数@"http://en.wikipedia.org/wiki/Hősök_tere"
不包含任何 format specifiers ,所以
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";