2010-03-01 8 views
7

Je veux vérifier si un NSString est une URL valide afin que je puisse l'analyser à une variable NSURL ... est-il un moyen facile de le faire? :)Vérifiez si l'URL est valide pour que je puisse la transmettre à un NSURL?

CRASH Pour une raison quelconque les application se bloque lors de la vérification .....

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

La console me donne cette erreur .....

* Terminating application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '* - [NSURL initWithString: relativeToURL:]: aucun paramètre de chaîne' 2010-03-01 19: 24: 14.797 Snippety [8289: 5e3b] Pile: ( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485,)

Répondre

9

Edit: la réponse ci-dessous n'est pas vraie. (docs Apple: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSURL_Class/index.html)


NSURLURLWithString renvoie l » nil si l'URL est passé pas valide. Ainsi, vous pouvez simplement vérifier la valeur de retour pour déterminer si l'URL est valide.

Exemple:

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

Pour une raison quelconque, l'application plante ... Elle fonctionne si l'URL est valide, sinon elle plante juste ?? ** code ci-dessus ** – tarnfeld

+0

Essayez URLWithString plutôt que initWithString – MarkPowell

+2

NSURL accepte volontiers n'importe quelle valeur de chaîne sauf nil. C'est le seul dont vous avez besoin de cas particulier pour –

5

J'utilise la méthode ci-dessous pour vérifier si NSString testString est une URL valide:

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

système teste le préfixe de l'URL, par exemple http: //, https: // ou ftp: //

L'hôte teste le domaine de l'URL, par ex. google.com or images.google.com

Remarque: Cela vous donnera toujours des faux positifs, par ex. lors de la vérification http://google,com (notez la virgule) retournera valide mais il est certainement plus précis que de vérifier si NSURL n'est pas nul ([NSURL urlWithString:@"banana"] n'est pas nul).

Questions connexes