将NSURL转换为NSString


336

我有一个应用程序,用户可以从内置应用程序图像或iphone照片库中选择图像。我使用具有NSString属性的对象场合来保存imagePath

现在,对于内置应用程序图像,我确实将文件名NSString保存为[occasion imagePath]。但是在第二种情况下,用户从照片库中选择一个图像,我得到了一个NSURL我想转换为的图像NSString,以便可以将其保存在[occasion imagePath]中。

可以将转换NSURLNSString吗?

Answers:


682

在Objective-C中:

NSString *myString = myURL.absoluteString;

在Swift中:

var myString = myURL.absoluteString

文档中的更多信息:


132

如果您对纯字符串感兴趣:

[myUrl absoluteString];

如果您对URL表示的路径感兴趣(NSFileManager例如要与方法一起使用):

[myUrl path];

嗨,谢谢您的回答。正如我试图加载从图像中straing我救,我真正感兴趣的是你提到的有关使用的NSFileManager什么[myUril path];,当我用路径,而不是absoluteString它给我的名字asset.jpg你能认罪eelaborate更多如何使用这加载图像到UIImage实例?
阿里

你好 当然,要从文件名中获取真实的文件系统路径,您需要知道文件的存储位置,然后使用NSString的stringByAppendingPathComponent:组成文件来创建完整路径(目录+文件名)。知道图像存储在应用程序包中,在这种情况下,您可以使用[UIImage imageNamed:“ name”]调用来为您完成全部工作。但是在其他情况下,您必须指定完整路径。
viggio24 2011年

嗨,再次感谢您的回答。我仍然对如何使用此NSString将图像加载到UIImage感到困惑,该NSString assets-library://asset/asset.JPG?id=1000000001&ext=JPG是通过将其[myUrl absoluteString]转换为NSString之后的结果进行转换而保存的。我在这方面提出了这个问题,但没有得到答案。如果您能回答它,我将不胜感激[ stackoverflow.com/questions/8085267/…–
阿里

2
是的,当您想与NSFileManager一起使用它时,应该使用myUrl.path而不是myUrl.absoluteString,感谢Viggo24!
flypig 2012年

由于您有一个assets-library网址,而不是一个网址file,因此它与不兼容NSFileManager。对此类URL的访问受到严格控制ALAssetsLibrary
麦克阿卜杜拉

46

在Swift中试试这个:

var urlString = myUrl.absoluteString

目标C:

NSString *urlString = [myURL absoluteString];

我用NSString * urlString = [myURL absoluteString]; 但是我遇到了这个错误,xcode崩溃了。-[__ NSCFString absoluteString]:无法识别的选择器发送到实例0x791a18e0 –VõMai
Trinh

@VõMaiTrinh表示您myURL是NSString类的对象。由于NSString没有absoluteString方法,因此会导致崩溃。

17

快速更新:

var myUrlStr : String = myUrl.absoluteString

10
您可以省略,String因为Swift使用类型推断。
萨拉瓦特·哈诺夫

实际上,您应该省略String-《 Swift设计指南》试图尽量减少冗余代码。
返回真实

1

我只是为此事而奋斗,而此更新没有用。

最终在Swift中做到了:

let myUrlStr : String = myUrl!.relativePath!

1

您可以使用任何一种方式

NSString *string=[NSString stringWithFormat:@"%@",url1];

要么

NSString *str=[url1 absoluteString];

NSLog(@"string :: %@",string);

字符串:: file:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAAA1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

NSLog(@"str :: %@", str);

str ::文件:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.