2010-03-01 83 views
7

我想檢查一個NSString是否是一個有效的URL,因此我可以將它解析爲一個NSURL變量......有沒有簡單的方法來做到這一點? :)檢查是否有效的網址,以便我可以將它傳遞給NSURL?

CRASH 出於某種原因,檢查時,應用程序崩潰.....

NSURL *shortURL = [[NSURL alloc] initWithString:data]; 
if(shortURL == nil) 
{ 
    NSLog(@"INVALID"); 
} 
else { 
    NSLog(@"COOOL"); 
} 

控制檯給了我這個錯誤.....

*終止應用程序由於未捕獲異常'NSInvalidArgumentException',原因:'* - [NSURL initWithString:relativeToURL:]:nil字符串參數' 2010-03-01 19:24:14.797 Snippety [8289:5e3b] Stack:( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485,)

回答

9

編輯:下面的答案是不正確的。 (蘋果文檔:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html


NSURLURLWithString回報nil如果傳遞的URL是無效的。因此,您可以檢查返回值以確定URL是否有效。

實施例:

NSURL *url = [NSURL URLWithString:urlString]; 
if(url){ NSLog("valid"); } 
+0

由於某種原因,該應用程序崩潰.....它的作品,如果URL是有效的,如果不是它只是崩潰? **以上代碼** – tarnfeld 2010-03-01 19:19:54

+0

嘗試使用URLWithString而不是initWithString – MarkPowell 2010-03-01 20:04:36

+2

NSURL很樂意處理除nil以外的任何字符串值。這是你需要特殊處理的唯一一個 – 2012-05-14 14:43:57

5

我使用下面的方法來檢查的NSString的TestString是否是一個有效的URL:

NSURL *testURL = [NSURL URLWithString:testString]; 
if (testURL && [testURL scheme] && [testURL host]) 
{ 
    NSLog(@"valid"); 
} 
{ 
    NSLog(@"not valid"); 
} 

方案測試的URL,例如的前綴http://,https://或ftp://

主機測試URL的域,例如, google.com或images.google.com

注意:這仍然會給您一些誤報,例如當檢查http://google,com(注意逗號)將返回有效,但它肯定比僅檢查NSURL是否爲零([NSURL urlWithString:@"banana"]不是零)更精確。

相關問題