NSData和NSURL - 空间有问题的网址

Sag*_*ari 38 iphone xcode nsurl nsdata

我的应用程序中有以下代码.

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
Run Code Online (Sandbox Code Playgroud)

pathOfThumbNail具有以下路径


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


当我在safari浏览器中打开上面的路径时 - 路径自动更改并且图像成功显示.

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


但在iPhone中,由于路径中的空间,图像未加载到nsdata中.

zap*_*aph 98

使用:stringByAddingPercentEscapesUsingEncoding:

使用给定的编码返回接收器的表示,以确定将接收器转换为合法URL字符串所需的转义百分比.

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
Run Code Online (Sandbox Code Playgroud)

接收器的表示,使用编码来确定将接收器转换为合法URL字符串所需的转义百分比.如果编码不能编码特定字符,则返回nil

根据@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);
Run Code Online (Sandbox Code Playgroud)

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'  

  • 好极了!正如我想要的那样.实际上我知道但是由于项目负荷而忘记了.对你有帮助的帽子. (2认同)

Nik*_*ani 13

一个swift 3.0方法(stringByAddingPercentEscapesUsingEncoding和stringByAddingPercentEncodingWithAllowedCharacters现在似乎已弃用):

let urlString ="your/url/".addingPercentEncoding( withAllowedCharacters: .urlQueryAllowed)
Run Code Online (Sandbox Code Playgroud)


Pri*_*est 5

stringByAddingPercentEscapesUsingEncoding已在 iOS 9.0 中弃用,建议您stringByAddingPercentEncodingWithAllowedCharacters改用。

这是 iOS 9.0 的 Objective-C 代码

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);
Run Code Online (Sandbox Code Playgroud)