格式字符串不使用数据参数,但它工作正常

时间:2013-01-17 12:41:22

标签: ios uiwebview nsstring

我使用了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]];

我该如何解决这个问题?我的代码中缺少什么东西?

2 个答案:

答案 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";