это может быть очень легко, но я, кажется, не понимаю, почему здесь URLWithString:
возвращается nil.
//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];
webName
до вашего звонкаstringWithFormat:
? Тогда какова стоимостьstringURL
до вашего звонкаURLWithString:
? ИспользуйтеNSLog()
для их пошаговой печати или для установки точек останова и проверки значений по мере их установки.Ответы:
Вам также необходимо экранировать символы, отличные от ASCII, в жестко заданном URL-адресе:
Вероятно, вы можете удалить экранирование localisationName, поскольку оно будет обработано экранированием всей строки.
источник
stringByAddingPercentEscapesUsingEncoding
конвертирует # в% 2webStringURL = [stringURL stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet.URLQueryAllowedCharacterSet];
Используйте эту функцию, если вы имеете дело с файлом, сохраненным в файловом менеджере.
источник
Я думаю, вам нужно использовать
-[NSString stringByAddingPercentEscapesUsingEncoding:]
. См. Документ Apple .Другой комментарий заключается в том, что мне, как старому таймеру, немного неудобно помещать символы, отличные от ASCII, в исходный файл. Тем не менее, в этом документе Apple говорится, что, начиная с 10.4, строки UTF-16 внутри в порядке
@"..."
. Каким-то образом кажется, что GCC правильно конвертирует исходный файл в Latin-1 в UTF-16 в двоичном формате, но я думаю, что безопаснее всего использовать 7-битные символы ASCII только внутри исходного кода и использоватьNSLocalizedString
.источник
Я думаю, что ваши акцентированные персонажи сбивают с толку; они не будут обрабатываться -stringByAddingPercentEscapesUsingEncoding :.
источник
NSURL URLWithString: @ "" вернет nil, если URL не соответствует RFC 2396, и они должны быть экранированы
Если вы прочитаете rfc2396 по ссылке, вы получите множество деталей
Я нашел отличный сайт для проверки того, где находится оскорбительный персонаж, выберите вариант пути для URL
http://www.websitedev.de/temp/rfc2396-check.html.gz
источник
Вызов URLWithString: вернет ноль, если переданная ему строка имеет неправильный формат. Поскольку NSURL возвращает nil для искаженных URL-адресов, NSLog ваша строка и установка точек останова, чтобы точно видеть, что передается вашему методу создания NSURL. Если ваш URLWithString работает с жестко заданным значением, это еще одно доказательство того, что все, что вы передаете, искажено. видеть
источник
Вы можете использовать NSURL напрямую без NSString.
//.h файл
//.m файл
И я передаю URL-адрес из другого представления (используя переменную NewsUrl) в это представление.
Попытайся.
источник