2009-12-30 19 views
87

può essere molto facile, ma non mi sembra di scoprire perché è URLWithString: ritorno nullo qui.URLWithString: ritorna nil

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

che cosa è il valore di 'webName' prima della chiamata a' stringWithFormat: '? Quindi, qual è il valore di 'stringURL' prima della chiamata a' URLWithString: '? Utilizzare 'NSLog()' per stamparle passo dopo passo, oppure, impostare punti di interruzione e ispezionare i valori così come sono impostati. –

risposta

189

avete bisogno di sfuggire i caratteri non ASCII nel tuo URL hardcoded così:

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

Probabilmente si può rimuovere la fuga del localisationName dal momento che sarà gestito dalla fuga di tutta la stringa.

+0

Thnx It's working fine ......... –

+0

funziona ... buono – Akshay

+0

Cercando di capire perché URLWithString sta dando zero qui. I documenti Apple dicono "Deve essere un URL conforme a RFC 2396. Questo metodo analizza URLString in base alle RFC 1738 e 1808.". Facendo un po 'di lettura ... – russau

8

Suppongo che sia necessario utilizzare -[NSString stringByAddingPercentEscapesUsingEncoding:]. Vedi Apple doc.

Un altro commento è che, come un vecchio timer, lo trovo un po 'a disagio a mettere caratteri non-ASCII in un file sorgente. Detto questo, questo Apple doc dice, a partire da 10.4, le stringhe UTF-16 sono OK all'interno di @"...". In qualche modo GCC sembra per convertire correttamente il file sorgente in Latin-1 in UTF-16 in binario, ma penso che sia più sicuro da usare caratteri a 7 bit ASCII solo all'interno del codice sorgente, e utilizzare NSLocalizedString.

2

Penso che i tuoi personaggi accentati stiano buttando via le cose; non saranno gestiti da -stringByAddingPercentEscapesUsingEncoding :.

0

URLWithString: la chiamata restituirà un valore nullo se la stringa passata non è valida. Poiché NSURL restituisce null per gli URL non validi, NSLoga la stringa e imposta i punti di interruzione per vedere esattamente ciò che viene passato al metodo di creazione NSURL. Se URLWithString funziona con un valore hard coded, questa è un'ulteriore prova che qualsiasi cosa tu stia passando è malformata. see

0

È possibile utilizzare NSURL direttamente senza NSString.

file di //.h

@interface NewsBrowser : UIViewController { 

    UIWebView *webView; 
    NSURL *NewsUrl; 

} 

@property (nonatomic, retain) IBOutlet UIWebView *webView; 

@property(nonatomic,assign)NSURL *NewsUrl; 

@end 

file di //.m

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

e passo l'URL da un'altra vista (utilizzando variabili NewsUrl) a questo punto di vista.

Provalo.

+0

Questa risposta non ha affrontato la questione a tutti, che è stato chiedendo perché URLWithString: stava tornando a zero. (Inoltre, non hai nemmeno mostrato un mezzo per cambiare una stringa in un URL.) – ArtOfWarfare

37

Utilizzare questa funzione se si tratta di file salvati su file manager.

+0

grazie è quello che stavo cercando. – user1258240

+0

Anche questo ha funzionato per me – ekscrypto

+0

Questa è stata una soluzione eccellente e concisa, grazie! – ThinkBonobo

2

NSURL URLWithString: @ "" tornerà a zero se l'URL non è conforme a RFC 2396 e devono essere sfuggito

Se andate a leggere attraverso rfc2396 nel link si ottengono carichi di dettagli

Un grande sito che ho trovato per verificare dove il personaggio incriminato è, scegliere l'opzione percorso URL

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

Problemi correlati