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

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

是否可以转换将NSURL转换为NSString吗?

#1 楼

在Objective-C中:

NSString *myString = myURL.absoluteString;


在Swift中:

var myString = myURL.absoluteString


文档中的更多信息:

#2 楼

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

[myUrl absoluteString];


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

[myUrl path];


评论


嗨,谢谢您的回答。当我试图从保存的应变中加载图像时,我对您提到的将NSFileManager与[myUril path]一起使用的内容非常感兴趣。当我使用path而不是absoluteString时,它给我起了名字asset.jpg您能否详细说明如何使用它来将图像加载到UIImage实例中?

–阿里
2011年11月13日15:17

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

–viggio24
2011年11月14日在9:18

嗨,谢谢您再次感谢。我仍然对如何使用此NSString asset-library://asset/asset.JPG?id = 1000000001&ext = JPG将图像加载到UIImage上感到困惑,在将[myUrl absoluteString]转换为NSString。我在这方面提出了这个问题,但没有得到答案。如果您能回答它,我将不胜感激[stackoverflow.com/questions/8085267 / ...

–阿里
2011年11月15日13:47

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

–flypig
2012年7月18日在15:09

由于您拥有资产库URL,而不是文件库URL,因此它与NSFileManager不兼容。对此类URL的访问由ALAssetsLibrary严格控制。

–迈克·阿卜杜拉(Mike Abdullah)
13年5月29日在8:38

#3 楼

在Swift中尝试:

var urlString = myUrl.absoluteString


Objective-C:

NSString *urlString = [myURL absoluteString];


评论


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

–Võ Mai Trinh
15年6月22日在9:39

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

–铍
15年6月22日在9:45

#4 楼

快速更新:

var myUrlStr : String = myUrl.absoluteString


评论


您可以省略String,因为Swift使用类型推断。

–萨拉瓦特·哈诺夫(Salavat Khanov)
2014年8月12日14:53

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

–返回true
16年7月11日在11:04

#5 楼

我只是为此而战,这次更新没有用。

这最终在Swift中完成了:

let myUrlStr : String = myUrl!.relativePath!


#6 楼

您可以使用任何一种方法

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




NSString *str=[url1 absoluteString];

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



字符串::文件: ///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


#7 楼

在Swift中:-
var str_url = yourUrl.absoluteString

它将在字符串中产生一个url。

评论


答案重复了4年

– grg
20年11月6日,19:43