iphone objective-c url nsstring nsurl

iphone - URLWithString: devuelve nada



objective-c nsstring (7)

Creo que tus personajes acentuados están tirando cosas; no serán manejados por -stringByAddingPercentEscapesUsingEncoding :.

puede ser muy fácil, pero no parece descubrir por qué URLWithString: devuelve nulo aquí.

//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];


La llamada URLWithString: devolverá un valor nulo si la cadena que se le pasó está mal formada. Como NSURL devuelve nulo para las URL malformadas, NSLogue su cadena y establezca puntos de interrupción para ver exactamente qué se está pasando a su método de creación de NSURL. Si su URLWithString funciona con un valor codificado, eso es una prueba más de que todo lo que está pasando está mal formado. see



Puede usar NSURL directamente sin NSString.

//.h archivo

@interface NewsBrowser : UIViewController { UIWebView *webView; NSURL *NewsUrl; } @property (nonatomic, retain) IBOutlet UIWebView *webView; @property(nonatomic,assign)NSURL *NewsUrl; @end

//.m archivo

[webView loadRequest:[NSURLRequest requestWithURL:NewsUrl]];

Y paso la URL de otra vista (usando la variable NewsUrl) a esta vista.

Intentalo.


Supongo que debes usar -[NSString stringByAddingPercentEscapesUsingEncoding:] . Ver el documento de Apple .

Otro comentario es que, como un viejo temporizador, me resulta un poco incómodo poner caracteres que no sean ASCII en un archivo fuente. Dicho esto, este documento de Apple dice que a partir de 10.4, las cadenas UTF-16 están bien dentro de @"..." . De alguna manera, GCC parece convertir correctamente el archivo fuente en Latin-1 en UTF-16 en el binario, pero creo que es más seguro usar caracteres ASCII de 7 bits solo dentro del código fuente, y usar NSLocalizedString .


También debe escapar de los caracteres que no sean ASCII en su URL codificada:

//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];

Probablemente pueda eliminar el escape del localisationName ya que será manejado por el escape de la cadena completa.


Use esta función si trabaja con archivos guardados en el administrador de archivos.

NSURL *_url = [NSURL fileURLWithPath:path];