2010-03-01 9 views
7

Ich möchte überprüfen, ob eine NSString eine gültige URL ist, so kann ich es auf eine NSURL Variable analysieren ... gibt es eine einfache Möglichkeit, dies zu tun? :)Überprüfen Sie, ob eine gültige URL vorhanden ist, damit ich sie an NSURL weitergeben kann?

CRASH Aus irgendeinem Grund die Abstürze App bei der Überprüfung .....

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

Die Konsole gibt mir diesen Fehler .....

* Terminating App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '* - [NSURL initWithString: relativeToURL:]: Nullzeichenfolgenparameter' 2010-03-01 19: 24: 14.797 Snippety [8289: 5e3b] Stapel: ( 8.307.803, 2419510843, 8.391.739, 8.391.578, 2.898.550, 3.152.497, 12262, 12183, 27646, 2.662.269, 2.661.144, 2454790485,)

Antwort

9

Edit: Die folgende Antwort ist nicht wahr. (Apple-docs: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html)


NSURL ‚s URLWithString kehrt nil wenn die übergebene URL nicht gültig ist. Sie können also einfach den Rückgabewert überprüfen, um festzustellen, ob die URL gültig ist.

Beispiel:

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

Aus irgendeinem Grund stürzt die App ab ..... Es funktioniert, wenn die URL gültig ist, wenn es nicht einfach abstürzt ?? ** Code über ** – tarnfeld

+0

Versuchen Sie URLWithString anstelle von initWithString – MarkPowell

+2

NSURL wird gerne mit einem beliebigen String-Wert außer Nil umgehen. Das ist die einzige, die Sie für Spezialfall benötigen, für –

5

I die folgenden Verfahren sind mit überprüfen, ob NSString teststring eine gültige URL ist:

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

Schema testet das Präfix der URL, z.B. http: //, https: // oder ftp: //

host testet die Domäne der URL, z. google.com oder images.google.com

Hinweis: Dies gibt Ihnen immer noch einige falsche Positive, z. Bei der Überprüfung http://google,com (beachten Sie das Komma) wird gültig aber es ist definitiv genauer als nur überprüfen, ob NSURL ist nicht Null ([NSURL urlWithString:@"banana"] ist nicht Null).

Verwandte Themen