это может быть очень легко, но я не делаю, кажется, узнает, почему URLWithString:
возврат ноля здесь.
//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];
Вам также необходимо экранировать не-ASCII символы в вашем жестко закодированном URL:
//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];
Вероятно, вы можете удалить экранирование локализацииName, так как оно будет обработано экранированием всей строки.
.Я думаю, что ваши акцентированные персонажи сбрасывают со счетов; они не будут обрабатываться с помощью -stringByAddingPercentEscapesUsingEncoding:.
-[NSString stringByAddingPercentEscapesUsingEncoding:]-[NSString stringByAddingPercentEscapesUsingEncoding:]-[NSString stringByAddingPercentEscapesUsingEncoding:]. Смотрите -[Apple doc.
Другой комментарий заключается в том, что, как старый таймер, я нахожу немного неудобным помещать не-ASCII символы в исходный файл.
Тем не менее, в этом Apple doc говорится, что начиная с 10.4, строки UTF-16 в @"..."
.
Каким-то образом GCC, кажется, правильно преобразует исходный файл на латинице-1 в UTF-16 в двоичном варианте, но я думаю, что безопаснее всего использовать
7-битные ASCII-символы только внутри исходного кода, и использовать NSLocalizedString
.
Вызов URLWithString: возвращает ноль, если переданная ему строка неправильно сформирована. Поскольку NSURL возвращает nil для неправильно сформированных урлов, запишите в NSLog вашу строку и установите точки останова, чтобы увидеть, что именно передается в ваш метод создания NSURL. Если ваш URLWithString работает с жестко закодированным значением, это еще одно доказательство того, что все, что вы передаете, неправильно сформировано. see