Iphone NSData&;NSURL-空间有问题的url

Iphone NSData&;NSURL-空间有问题的url,iphone,xcode,nsdata,nsurl,Iphone,Xcode,Nsdata,Nsurl,我的应用程序中有以下代码 NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]]; PathoftHumbail有以下路径 58B.jpg 当我在safari浏览器中打开上面的路径时-路径将自动更改并成功显示图像 但在iPhone中,由于路径中有空格,图像不会加载到nsdata中。使用:stringByAddingPercentEscapesUsingEncoding: 返回使用

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

NSData *data=[NSData dataWithContentsOfURL:[NSURL URLWithString:pathOfThumbNail]];
PathoftHumbail有以下路径


58B.jpg


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



但在iPhone中,由于路径中有空格,图像不会加载到nsdata中。

使用:stringByAddingPercentEscapesUsingEncoding:

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

-(NSString *)stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)encoding
接收方的一种表示形式,使用编码来确定将接收方转换为合法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);
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' urlText:'70.84.58.40/projects/igolf/TipThumb/GOLF 58B.jpg' URLTEXIT:'70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg' url:'70.84.58.40/projects/igolf/TipThumb/GOLF%2058B.jpg' swift 3.0方法(stringByAddingPercentEscapesUsingEncoding和stringByAddingPercentEncodingWithAllowedCharacters现在似乎不推荐):


iOS 9.0中已弃用
stringByAddingPercentEscapesUsingEncoding
,建议您改用
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);

伟大的正是我想要的。事实上,我知道它,但忘记了由于项目负载。谢谢你对我的帮助。你的回答很好,但你应该给出一个像这样的例子:NSString*urlText=@“58B.jpg”;urlText=[urlText stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];NSURL*url=[NSURL URLWithString:urlText];注意:stringByAddingPercentEscapesUsingEncoding不编码保留字符,如和号(&)和斜杠(/),谢谢@Zaph,这确实非常有用。问得好,在遇到类似问题时意外发现了这个问题。
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);