2009-11-01 57 views
1

我是iPhone开发新手。NSURL没有正确实例化

我有NSURL很奇怪的问题,这让我疯狂。我想实例化NSURL对象以在加载图像中使用它。但实例化不会以适当的方式发生。它总是说我的网址无效。

基本上我使用代码象下面这样:

NSString *str = @"http://google.com"; 
NSURL *url = [NSURL URLWithString:str]; 

但我也已经尝试了许多不同的变型的(具有CFStringRef + CFURLCreateStringByAddingPercentEscapes等)。他们都不为我工作。在调试器中,url被设置为“无效”。

它可能是什么?我不认为这是算法或环境问题。这可能是关于一些设置?

有没有人知道会发生什么?

+2

'NSURL * URL = [NSURL URLWithString:@ “http://google.com”];'工作得很好。你的*实际*代码是什么? – 2009-11-01 19:49:10

+0

(我的上述评论具有'HTTP://'中,但所述过滤器改变它变成一个链路) – 2009-11-01 19:50:00

回答

2

你使用的是实际的代码还是只是代码“喜欢”它?如果你没有给它一个有效的字符串,并且所有内容都正确转义,那么这个方法将返回nil。

+0

确切的代码是: 1)原产于的NSString逸出: 的NSString * STR = @“HTTP: //google.com“; NSString * escaped = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL * url = [NSURL URLWithString:escaped]; 和2)CFStringRef转义: NSString * str = @“http://google.com”; (CFStringRef)str,NULL,(CFStringRef)@“; /?:@&= + $,”,kCFStringEncodingUTF8);这个函数返回一个CFStringRef对象。 NSURL * url = [NSURL URLWithString:(NSString *)escaped]; 两者都失败了。 – taokakao 2009-11-01 20:27:42

3

您的字符串不正确转义 - 你应该做这样的:

NSString *str = @"http://google.com"; 
NSString *escStr = [str stringByAddingPercentEscapesUsingEncoding: 
               NSASCIIStringEncoding]; 
NSURL *url = [NSURL URLWithString:escStr];
+0

此代码发生相同的错误。当我查看调试器时:url的_urlString参数是“无效的”。接下来使用url会引发异常。 – taokakao 2009-11-01 20:22:59