NSData & NSURL - URL mit Raum mit Problem
Frage
Ich habe folgenden Code in meiner Anwendung.
NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
pathOfThumbNail hat folgenden Pfad
http://70.84.58.40/projects/igolf/TipThumb/GOLF 58B .jpg
Als ich oben Pfad in Safari-Browser öffnen -. Pfad wird automatisch geändert & Bild erfolgreich angezeigt
http://70.84.58.40/projects/igolf/TipThumb/GOLF% 2058B.jpg
Aber in iPhone, aufgrund Raum in Pfad, wird das Bild nicht in NSData geladen.
Lösung
Verwendung: stringByAddingPercentEscapesUsingEncoding:
Gibt eine Darstellung des Empfängers einen bestimmten Codierung den Prozentsatz zu bestimmen, entkommt notwendig, den Empfänger in eine rechtliche URL-Zeichenfolge zu konvertieren.
-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Eine Darstellung des Empfängers Codierung den Prozentsatz zu bestimmen, entkommt notwendig, den Empfänger in eine rechtliche URL-Zeichenfolge zu konvertieren. Gibt nil zurück, wenn Codierung kann nicht ein bestimmtes Zeichen kodieren
Hinzugefügt pro Anfrage von @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 Ausgabe:
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'
Andere Tipps
Ein schneller 3.0-Ansatz (stringByAddingPercentEscapesUsingEncoding und stringByAddingPercentEncodingWithAllowedCharacters scheinen jetzt veraltet):
let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
stringByAddingPercentEscapesUsingEncoding
hat in iOS 9.0 veraltet, es wird empfohlen, Sie stringByAddingPercentEncodingWithAllowedCharacters
anstelle.
Hier ist der Objective-C-Code für> 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);