2009-11-01 94 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