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.

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top