NSURL URLWithString:给出nil

时间:2012-02-22 12:33:51

标签: iphone nsurl

请参阅以下代码:

UIImage *image;
NSString *str = [[[Data getInstance]arrPic]objectAtIndex:rowIndex];
NSLog(str);
NSURL *url = [NSURL URLWithString:str];
NSData *data = [NSData dataWithContentsOfURL:url];
image = [UIImage imageWithData:data];  

str 正在给我http://MyDomain/Pics\\1.png,但网址正在给我 nil

3 个答案:

答案 0 :(得分:18)

试试这个,

[NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

答案 1 :(得分:2)

从文档中,URLWithString:方法采用格式正确的 URL字符串:

  

此方法要求URLString包含任何必要的百分比转义码,即':','/','%','#',';'和'@'。请注意,'%'转义是通过UTF-8转换的。

我建议您之前使用NSString的{​​{1}}方法重试相同的内容。

答案 2 :(得分:2)

从iOS9开始,stringByAddingPercentEscapesUsingEncoding已弃用。要安全地转义URL字符串,请使用:

NSMutableCharacterSet *alphaNumSymbols = [NSMutableCharacterSet characterSetWithCharactersInString:@"~!@#$&*()-_+=[]:;',/?."];
[alphaNumSymbols formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];

str = [str stringByAddingPercentEncodingWithAllowedCharacters:alphaNumSymbols];

这会创建要保持原样的字符集,并要求将这些字符集之外的所有字符转换为%百分比编码值。