2010-03-28 5 views
18

Ich habe den folgenden Code Google Maps zu öffnen:UIApplication Openurl arbeitet nicht mit formatiertem NSString

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@, Anchorage, AK",addressString]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]]; 

Aber es funktioniert nicht und es gibt keine Fehler. Es öffnet sich einfach nicht.

Antwort

44

URLWithString erfordert eine Prozent-Escaped-Zeichenfolge. Ihre Beispiel-URL enthält Leerzeichen, die dazu führen, dass keine NSURL erstellt wird. Darüber hinaus kann der AddressString auch Zeichen enthalten, die maskiert werden müssen. Versuchen Prozent-escaping der URL-Zeichenfolge zuerst:

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@, Anchorage, AK",addressString]; 
NSString *escaped = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:escaped]]; 
5

Notwendigkeit, das urlString zu entkommen, sonst [NSURL URLWithString: urlString] wird nill zurück.

NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@, Anchorage, AK",addressString]; 
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ]];