12
votes

Vérifiez si URL valide pour que je puisse le transmettre à un nsurl?

Je veux vérifier si un nstring est une URL valide afin que je puisse l'analyser à une variable nsurl ... Y a-t-il un moyen facile de faire cela? :)

crash Pour une raison quelconque, l'application se bloque lors de la vérification ..... xxx

la console me donne cette erreur .....

* Application de terminaison due à une exception non capturée 'NsinvalidargumentException', raison: '* - [Nsurl initwithstring: relativetourl:]: Nil String Paramètre' 2010-03-01 19: 24: 14.797 Ensuite [8289: 5E3B] Stack: ( 8307803, 2419510843, 8391739, 8391578, 2898550, 3152497, 12262, 12183, 27646, 2662269, 2661144, 2454790485, 2454790162 )


0 commentaires

3 Réponses :


11
votes

Edit: La réponse ci-dessous n'est pas vraie. (Apple Docs: HTTPS: // développeur.apple.com/library/mac/documentation/cocoa/reference/foundation/classes/nsurl_class/index.html ) em> strong>


nsurl code> 's urlwithitching code> renvoie nil code> si l'URL passée n'est pas valide. Donc, vous pouvez simplement vérifier la valeur de retour pour déterminer si l'URL est valide. P>

Exemple: P>

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


6 commentaires

Pour une raison quelconque, l'application s'écrase ..... Cela fonctionne si l'URL est valide, sinon cela se bloque ?? code ci-dessus


Essayez l'urlwithstring plutôt que l'initwithstring


Nsurl sera volontiers gérer une valeur de chaîne sauf nil. C'est le seul dont vous avez besoin à une affaire spéciale pour


c'est faux. Toute chaîne passera comme une URL lors de l'utilisation de l'URLWithString.


Du Nsurl S de NIL NIL Changement de Changement équitable, pour la libération du système d'exploitation X 10.7, etc.: mikeaubullah.net/urlwithstring-changed.html


[nsurl urlwithstring: @ "banane"] serait valide :)



16
votes

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

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


1 commentaires

Il y a un autre manquant



2
votes

Ceci est fondamentalement ce que le + [nsurlconnection Canhandlerequest:] code> méthode fait. Cette méthode exécute une vérification de la Feullight contre un Nsurlrequest code> pour vous assurer que la demande est résolvable. Pour vérifier rapidement une URL particulière, vous pouvez le faire:

BOOL isValidURL = [NSURLConnection canHandleRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://example.com"]];


0 commentaires