NSData & NSURL - url com espaço tendo problema
Pergunta
Eu tenho seguinte código no meu aplicativo.
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
pathOfThumbNail tem seguinte caminho
http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B .jpg
Quando abro acima caminho no browser safari -. Caminho é alterado automaticamente & imagem é exibida com sucesso
http://70.84.58.40/projects/igolf/TipThumb/GOLF% 2058B.jpg
Mas no iPhone, devido ao espaço no caminho, a imagem não é carregado na NSData.
Solução
Use: stringByAddingPercentEscapesUsingEncoding:
Retorna uma representação do receptor utilizando uma determinada codificação para determinar a porcentagem escapa necessário converter o receptor a uma seqüência de URL jurídica.
-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
A representação do receptor usando a codificação para determinar a porcentagem escapa necessário converter o receptor a uma seqüência de URL legal. Retorna nil se codificação não pode codificar um caráter particular
Adicionado por solicitação por @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);
saída 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'
Outras dicas
A rápida abordagem 3.0 (stringByAddingPercentEscapesUsingEncoding e stringByAddingPercentEncodingWithAllowedCharacters parece agora obsoleto):
let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
stringByAddingPercentEscapesUsingEncoding
foi preterido no iOS 9.0, é recomendável que você use stringByAddingPercentEncodingWithAllowedCharacters
vez.
Aqui está o código Objective-C para> 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);