web-dev-qa-db-fra.com

Nsdata & Nsurl - URL avec espace ayant un problème

J'ai le code suivant dans ma demande.

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

pathofthumbnail a suivi du chemin


http://70.84.58.40/projects/igolf/tipthumb/golf 58b.jpg


Lorsque j'ouvre au-dessus de la trajautrine dans le navigateur Safari - Chemin est modifié automatiquement et l'image est affichée avec succès.

http://70.84.58.40/projects/igolf/tipthumb/golf%2058b.jpg


Mais dans iPhone, en raison de l'espace dans le chemin, l'image n'est pas chargée dans Nsdata.

38
Sagar R. Kothari

UTILISATION: STRESSIONDADINDINGPENDESCAPESESUSECODING:

Renvoie une représentation du récepteur à l'aide d'un codage donné pour déterminer le pourcentage d'échappement nécessaire pour convertir le récepteur en une chaîne d'URL légale.

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

Une représentation du récepteur utilisant le codage pour déterminer le pourcentage d'échappement nécessaire pour convertir le récepteur en une chaîne d'URL légale. Retourne nil si le codage ne peut pas encoder un caractère particulier

Ajouté par demande par @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);

Sortie NSLog:

( .] URL: '70 .84.58.40/Projets/igolf/Tipthumb/Golf% 2058b.jpg '[.____]
98
zaph

A Swift 3.0 (StringByAddingDinderCenterCasesDingingCoding et StringByAddingCenterCodingCodingComment -AllaracTracters semble maintenant déprécié):

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

stringByAddingPercentEscapesUsingEncoding a été obsolète dans iOS 9.0, il est recommandé d'utiliser stringByAddingPercentEncodingWithAllowedCharacters à la place.

Voici le code de l'objectif-c pour> 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];

NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);
4
Priest