Подтвердить что ты не робот

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.

4b9b3361

Ответ 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);