Question

J'ai le code suivant dans mon application.

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

pathOfThumbNail a le chemin suivant

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

Lorsque j'ouvre le chemin ci-dessus dans le navigateur Safari - le chemin est modifié automatiquement & amp; l'image est affichée avec succès.

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

Mais sur l'iPhone, en raison de l'espace disponible dans le chemin d'accès, l'image n'est pas chargée dans nsdata.

Était-ce utile?

La solution

Utilisez: stringByAddingPercentEscapesUsingEncoding:

Renvoie une représentation du destinataire utilisant un codage donné pour déterminer le pourcentage d'évasions nécessaires pour convertir le destinataire en chaîne URL légale.

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding

Représentation du destinataire utilisant l'encodage pour déterminer le pourcentage d'évasions nécessaires pour convertir le destinataire en chaîne URL légale. Renvoie la valeur nil si le codage ne peut pas coder un caractère particulier

Ajouté par requête 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:

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'  

Autres conseils

Une approche swift 3.0 (stringByAddingPercentEscapesUsingEncoding et stringByAddingPercentEncodingWithAllowedCharacters semble maintenant obsolète):

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

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

Voici le code Objective-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];
enter code here

NSLog(@"urlText:        '%@'", urlText);
NSLog(@"urlTextEscaped: '%@'", urlTextEscaped);
NSLog(@"url:            '%@'", url);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top