2012-10-22 9 views
11

Got questo codice finora per il mio pulsante di invio:Come uscire da una NSString da utilizzare in NSURL?

NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", messageBox.text stringByAddingPercentEscapesUsingEncoding : NSUFT8StringEncoding]; 
NSURL *add = [NSURL URLWithString:urlString]; 

Tuttavia io capisco l'errore "Previsto ':'

risposta

19

è necessario separare la costruzione di due stringa di chiamate

NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", messageBox.text] stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding]; 
NSURL *add = [NSURL URLWithString:urlString]; 
+0

Ha funzionato in modo impeccabile! Grazie molto! –

+7

Questa risposta non è in realtà la risposta migliore. Dovresti sfuggire solo ai valori dei parametri individuali, non all'intero URL. Vuoi: 'NSString * urlString = [NSString stringWithFormat: @" http://server.com/ios/add.php?user=iPhone+App&message=%@ ", [messageBox.text stringByAddingPercentEscapesUsingEncoding: NSUFT8StringEncoding]]; – rmaddy

+1

"NSUFT8StringEncoding" dovrebbe essere "NSUTF8StringEncoding." "T" e "F" sono trasposti. – trevorgrayson

0

Separare il metodo NSString per vederlo chiaramente:

NSString* urlString = [[NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", messageBox.text] stringByAddingPercentEscapesUsingEncoding : NSUFT8StringEncoding]; 
7

Il modo corretto non è di sfuggire all'intero URL. Dovresti solo sfuggire ai valori dei singoli parametri.

NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", [messageBox.text stringByAddingPercentEscapesUsingEncoding : NSUFT8StringEncoding]]; 

Meglio ancora, per migliorare la leggibilità e più facile il debug, fare questo: codificherà automaticamente url la stringa quando si chiama NSURL urlWithString non è necessario questo codice

NSString *escapedText = [messageBox.text stringByAddingPercentEscapesUsingEncoding:NSUFT8StringEncoding]; 
NSString* urlString = [NSString stringWithFormat:@"http://server.com/ios/add.php?user=iPhone+App&message=%@", escapedText]; 
+0

Perché questo è più "corretto"? –

+0

@NigamShah Perché in questo caso è necessario solo codificare i valori dei parametri di query, non l'intero URL. – rmaddy

-1

NSURL.