NSString 到 NSurl

Posted

技术标签:

【中文标题】NSString 到 NSurl【英文标题】:NSString to NSurl 【发布时间】:2011-06-23 15:27:27 【问题描述】:

无法让 NSSTRING 转换为 NSURL,item.image 保存了我通过 xml 获取的图像的 url

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL URLWithString:urlString];

NSLog(@"string> %@ ", urlString);
NSLog(@"url> %@ ", url);

2011-06-23 11:18:49.610 Test[10126:207] string> http://www.harlemfur.com/images/Dog_Olive.jpg       
2011-06-23 11:18:49.611 Test[10126:207] url> (null) 

如果我尝试:

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL fileURLWithPath :urlString];

2011-06-23 11:22:08.063 Test[10199:207] string> http://www.harlemfur.com/images/Dog_Olive.jpg

2011-06-23 11:22:08.064 Test[10199:207] url> %0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20http://www.harlemfur.com/images/Dog_Olive.jpg%0A%20%20%20%20%20%20%20%20%20%20%20%20 -- / 

【问题讨论】:

无法复制。问题一定出在 item.image 上。它到底是什么类型的? 这些行是否就这样出现在您的代码中?直接一个接一个(构造和记录)? 【参考方案1】:

NSString 制作URL 时,别忘了先编码,所以试试这个:

NSString *urlString = [NSString stringWithFormat:@"%@", item.image];
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];  

对于 IOS ≥ 9.0 使用

NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];

【讨论】:

谢谢,但这是我得到的打印输出:2011-06-23 11:41:34.796 Test[10609:207] string> harlemfur.com/images/Dog_Olive.jpg 2011-06-23 11:41:34.797 Test [10609:207] 网址> %0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20http://www.harlemfur.com/图像/Dog_Olive.jpg%0A%20%20%20%20%20%20%20%20%20%20%20%20 那你应该检查你的item.image,确保没有隐藏字符。查看 NSString 文档以了解如何修剪字符串。 你说得对,我的 xml 中有多余的空格,谢谢老兄,就像一个魅力 只是一个快速更新,stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding 对于 ios ≥ 9.0 已弃用。你应该使用:stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]【参考方案2】:

一切正常,如果您想在 NSLog 中获取要打印的 URL,请使用:

NSLog(@"url> %@ ", [url absoluteString]);

【讨论】:

可以直接在 Objective-C 中打印对象。它调用description 方法。与 NSURL 配合得很好。【参考方案3】:

item.image 不仅包含 URL,而且以换行符和空格开头。先删除那些,你应该没事。

【讨论】:

【参考方案4】:

在斯威夫特中:

NSURL(fileURLWithPath: item.image!)

【讨论】:

以上是关于NSString 到 NSurl的主要内容,如果未能解决你的问题,请参考以下文章

追加到 NSString 方法的开头

NSString 到 NSUInteger

如何绑定到 NSString?

将 NSString 附加到 NSURL?

NSString 到 NSurl

NSString 到 NSDate 的转换失败