UIApplication openUrl не работает с отформатированной строкой NSString - PullRequest
18 голосов
/ 29 марта 2010

У меня есть следующий код для открытия карт Google:

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

Но это не работает, и нет ошибки. Он просто не открывается.

Ответы [ 2 ]

44 голосов
/ 29 марта 2010

URLWithString требуется строка с экранированием в процентах. Ваш пример URL содержит пробелы, что приводит к созданию нулевого NSURL. Кроме того, addressString может также содержать символы, которые необходимо экранировать. Попробуйте сначала экранировать строку процента:

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 голосов
/ 16 июля 2010

Необходимо экранировать строку urlString, иначе [NSURL URLWithString: urlString] вернет nill.

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