NSData & NSURL - url с пространством, имеющим проблемы
У меня есть следующий код в моем приложении.
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
pathOfThumbNail имеет следующий путь
http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg
Когда я открываю выше путь в браузере Safari - путь автоматически изменяется, и изображение успешно отображается.
http://70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg
Но в iPhone из-за пробела в пути изображение не загружается в nsdata.
Ответы
Ответ 1
Использование: stringByAddingPercentEscapesUsingEncoding:
Возвращает представление получателя с использованием заданной кодировки для определения процентных экранов, необходимых для преобразования получателя в юридическую строку URL.
-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Представление получателя с использованием кодировки для определения процентных экранов, необходимых для преобразования получателя в юридическую строку URL. Возвращает nil, если кодировка не может кодировать определенный символ
Добавлен в запрос @rule
NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString: urlTextEscaped];
NSLog(@"urlText: '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url: '%@'", url);
Выход NSLog:
urlText: '70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg'
urlTextEscaped: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'
url: '70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg'
Ответ 2
Подход с быстрым 3.0 (stringByAddingPercentEscapesUsingEncoding и stringByAddingPercentEncodingWithAllowedCharacters теперь устарел):
let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
Ответ 3
stringByAddingPercentEscapesUsingEncoding
устарел в iOS 9.0, рекомендуется использовать stringByAddingPercentEncodingWithAllowedCharacters
.
Здесь код Objective-C для > iOS 9.0
NSString* urlText = @"70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg";
NSString* urlTextEscaped = [urlText stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
NSURL *url = [NSURL URLWithString: urlTextEscaped];
enter code here
NSLog(@"urlText: '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url: '%@'", url);