NSURL返回null,stringByAddingPercent ...返回一个噩梦

时间:2011-07-19 23:33:58

标签: iphone nsstring nsurl

我会尽快做到,我仍然很新,但我通常可以解决问题,这个问题让我发疯。我在网站上有一个XML,将其解析成表格,点击该项目,将链接加载到webView中,然后启动问题......

    -(void)viewDidLoad {
NSString *str = [NSString stringWithFormat:@"%@", [item objectForKey:@"link"]];
NSURL *url = [NSURL URLWithString = str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest = request];
}

如果你是NSLog * str,那很好。如果你是NSLog URL,它就是null。问题显然是使用objectForKey,因为否则其他一切都有效。现在,如果我

NSURL *url = [NSURL URLWithString = [str stringByAddingPercentEscapesUsingEncoding:...

添加NSUTF或NSASCII,NSLog for URL添加

%0A%20%20%20%20%20%20%20%20%0A%20%20%0A%20%20

结束我的价值。因此,如果值为aq1sw2de3,则nslog将为

aq1sw2de3%0A%20%20 etc.

我只是在mac屏幕上查看它,假设代码中不存在所有拼写错误。我已经尝试了很多不同的方式将这个URL传递给webView,但我的结果要么是NULL,要么是那些该死的胡言乱语。我是在浪费时间做一些我不能做的事情吗?我是以错误的方式去做的吗?我一直在寻找几个小时,我看到的所有问题都是由于他们传递的字符串或网址的格式化(空格和导致错误),但我的链接值只是A到Z和0到9,就是这样。

3 个答案:

答案 0 :(得分:1)

“%20”和“%0A”分别是空格和制表符的转义序列百分比。检查你的字符串是否在末尾有一些额外的空格。

答案 1 :(得分:1)

不知何故,你的字符串正在拾取一些额外的空格。如果您只是需要修剪它,请尝试:

NSURL *url = [NSURL URLWithString:
             [[str stringByAddingPercentEscapesUsingEncoding: NSUTF8Encoding]        
             stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];

答案 2 :(得分:0)

斯科特是对的。查看NSCharacterSet,了解可用于修剪字符串的常量空格字符集。您可以使用NSString调用stringByTrimmingCharactersInSet并设置空格来删除不需要的字符。