NSData & amp; NSURL - url con spazio che presenta problemi
Domanda
Ho il seguente codice nella mia applicazione.
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
pathOfThumbNail ha il seguente percorso
http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B .jpg
Quando apro il percorso sopra nel browser Safari, il percorso viene cambiato automaticamente & amp; l'immagine viene visualizzata correttamente.
http://70.84.58.40/projects/igolf/TipThumb/GOLF% 2058B.jpg
Ma in iPhone, a causa dello spazio nel percorso, l'immagine non viene caricata in nsdata.
Soluzione
Usa: stringByAddingPercentEscapesUsingEncoding:
Restituisce una rappresentazione del destinatario utilizzando una determinata codifica per determinare la percentuale di escape necessaria per convertire il destinatario in una stringa URL legale.
-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Una rappresentazione del ricevitore che utilizza la codifica per determinare la percentuale di escape necessaria per convertire il destinatario in una stringa URL legale. Restituisce zero se la codifica non è in grado di codificare un carattere particolare
Aggiunto per richiesta da @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);
Uscita 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'
Altri suggerimenti
Un rapido approccio 3.0 (stringByAddingPercentEscapesUsingEncoding e stringByAddingPercentEncodingWithAllowedCharacters sembra ora deprecato):
let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
stringByAddingPercentEscapesUsingEncoding
è stato deprecato in iOS 9.0, si consiglia invece di utilizzare stringByAddingPercentEncodingWithAllowedCharacters
Ecco il codice Objective-C per > 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);