iphone xcode nsdata nsurl

iphone - NSData & NSURL-url con problemas de espacio



xcode (3)

Un enfoque rápido de 3.0 (stringByAddingPercentEscapesUsingEncoding y stringByAddingPercentEncodingWithAllowedCharacters ahora está en desuso):

let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)

Tengo el siguiente código en mi aplicación.

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];

pathOfThumbNail tiene la siguiente ruta

http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg

Cuando abro la ruta anterior en el navegador de safari, la ruta se cambia automáticamente y la imagen se muestra con éxito.

http://70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg

Pero en iPhone, debido al espacio en la ruta, la imagen no se carga en nsdata.


Uso: stringByAddingPercentEscapesUsingEncoding:

Devuelve una representación del receptor utilizando una codificación dada para determinar el porcentaje de escapes necesarios para convertir el receptor en una cadena de URL legal.

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

Una representación del receptor que utiliza la codificación para determinar el porcentaje de escapes necesarios para convertir el receptor en una cadena de URL legal. Devuelve nil si la codificación no puede codificar un carácter particular

Añadido por solicitud 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);

Salida de 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''


stringByAddingPercentEscapesUsingEncoding ha quedado en desuso en iOS 9.0, se recomienda usar stringByAddingPercentEncodingWithAllowedCharacters en stringByAddingPercentEncodingWithAllowedCharacters lugar.

Aquí está el código de 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);