90 votes

URLWithString: renvoie nil

c'est peut-être très facile, mais je ne semble pas savoir pourquoi URLWithString: renvoie zéro 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];
 

198voto

gerry3 Points 15696

Vous devez également échapper aux caractères non-ASCII de 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 du nomName étant donné qu'il sera traité par l'échappement de la chaîne entière.

39voto

Islam.Ibrahim Points 251

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

 NSURL *_url = [NSURL fileURLWithPath:path];
 

8voto

Yuji Points 26887

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

Un autre commentaire, c'est que, comme un old timer, je trouve ça un peu mal à l'aise de mettre des caractères non-ASCII dans un fichier source. Cela dit, cette Pomme doc dit, à partir de 10.4, UTF-16 chaînes sont OK à l'intérieur d' @"...". En quelque sorte GCC semble pour convertir correctement le fichier source en Latin-1 en UTF-16 dans le binaire, mais je pense qu'il est plus sûr d'utiliser Des caractères ASCII 7 bits seulement à l'intérieur du code source, et d'utiliser NSLocalizedString.

2voto

Ben Gottlieb Points 59900

Je pense que vos personnages accentués jettent des choses; ils ne seront pas gérés par -stringByAddingPercentEscapesUsingEncoding :.

0voto

Iggy Points 1277

L'URLWithString: call retournera un nil si la chaîne qui lui est transmise est mal formée. Puisque NSURL renvoie nil pour les URL malformé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 transmettez est mal formé. voir

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: