Nsurl возвращает ноль, когда я выбираю язык iPhone, кроме английского - PullRequest
0 голосов
/ 25 июля 2011

я вызываю приложение карты по умолчанию.из моего приложения, но, например, когда я выбираю португальский язык на моем iphone для текущего местоположения NSURL вернуть ноль.Я уже использовал кодирование UTF8 и процентное инкапсулирование следующим образом: -

 NSString *encodedURLString = [urlString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
    //where urlString has value http://maps.google.com/maps?saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857
 NSURL *URL = [NSURL URLWithString:encodedURLString];
 [[UIApplication sharedApplication] openURL:URL];

Я уже пробовал NSUTF8Encoding вместо NSASCIIStringEncoding, но ничего не помогло.Спасибо за любую помощь.

1 Ответ

1 голос
/ 25 июля 2011

Вы в процентах кодируете весь URL.

Превращает http://www.google.com в http%3A//www.google.com, который является неверно сформированным URL.

Из справочника по классу NSURL:

Возвращаемое значение: Объект NSURL, инициализированный с помощью URLString. Если строка была искажена, возвращает ноль.

Ergo, вы получаете ноль.

То, что вы хотите сделать, это:

NSString *path = @"http://maps.google.com/maps";
NSString *query = @"saddr=Localiza\u00e7\u00e3o+actual&daddr=28.6522907,77.1929857";
query = [query stringByAddingPercentEscapesUsingEncoding: NSASCIIStringEncoding];

NSString *url = [NSString stringWithFormat: @"%@?%@", path, query];
NSURL *URL = [NSURL URLWithString: url];
[[UIApplication sharedApplication] openURL: URL];
...