web-dev-qa-db-fra.com

URLWithString: renvoie zéro

cela peut être très facile, mais je ne semble pas savoir pourquoi URLWithString: retour nul ici.

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false&key=", webName];
NSURL* url = [NSURL URLWithString:stringURL];
90
gcamp

Vous devez également échapper les caractères non ASCII dans votre URL codée en dur:

//localisationName is a arbitrary string here
NSString* webName = [localisationName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString* stringURL = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@,Montréal,Communauté-Urbaine-de-Montréal,Québec,Canadae&output=csv&oe=utf8&sensor=false", webName];
NSString* webStringURL = [stringURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL* url = [NSURL URLWithString:webStringURL];

Vous pouvez probablement supprimer l'échappement de l'emplacementName car il sera géré par l'échappement de la chaîne entière.

200
gerry3

Utilisez cette fonction si vous traitez un fichier enregistré dans le gestionnaire de fichiers.

NSURL *_url = [NSURL fileURLWithPath:path];
39
Islam.Ibrahim

Je suppose que vous devez utiliser -[NSString stringByAddingPercentEscapesUsingEncoding:]. Voir doc Apple .

Un autre commentaire est que, en tant qu'ancien minuteur, je trouve un peu difficile de mettre des caractères non ASCII dans un fichier source. Cela dit, cela Apple doc dit, à partir de 10.4, les chaînes UTF-16 sont OK à l'intérieur @"...". D'une manière ou d'une autre, GCC semble convertir correctement le fichier source en Latin-1 en UTF-16 en binaire, mais je pense qu'il est plus sûr d'utiliser 7 bits ASCII caractères uniquement à l'intérieur du code source, et d'utiliser NSLocalizedString.

8
Yuji

Je pense que vos personnages accentués mettent des choses de côté; ils ne seront pas gérés par -stringByAddingPercentEscapesUsingEncoding :.

2
Ben Gottlieb

NSURL URLWithString: @ "" renverra nil si l'URL n'est pas conforme à RFC 2396 et qu'ils doivent être échappés

Si vous lisez rfc2396 dans le lien, vous obtiendrez de nombreux détails

Un excellent site que j'ai trouvé pour vérifier où se trouve le caractère incriminé, choisissez l'option de chemin d'accès pour l'URL

http://www.websitedev.de/temp/rfc2396-check.html.gz

2
Ryan Heitner

L'appel URLWithString: retournera un nil si la chaîne qui lui est passée est mal formée. Puisque NSURL renvoie zéro pour les URL mal formées, NSLog votre chaîne et définissez des points d'arrêt pour voir exactement ce qui est transmis à votre méthode de création NSURL. Si votre URLWithString fonctionne avec une valeur codée en dur, c'est une preuve supplémentaire que tout ce que vous passez est mal formé . voir

0
Iggy