将 NSURL 转换为 NSString

Posted

技术标签:

【中文标题】将 NSURL 转换为 NSString【英文标题】:Convert an NSURL to an NSString 【发布时间】:2011-12-26 07:57:55 【问题描述】:

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

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

是否可以将NSURL 转换为NSString

【问题讨论】:

【参考方案1】:

在 Objective-C 中:

NSString *myString = myURL.absoluteString;

在斯威夫特中:

var myString = myURL.absoluteString

更多信息在docs:

【讨论】:

【参考方案2】:

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

[myUrl absoluteString];

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

[myUrl path];

【讨论】:

您好,感谢您的回答。当我试图从我保存的应变加载图像时,我真的很感兴趣你提到的使用 NSFileManager 和[myUril path]; 当我使用 path 而不是 absoluteString 它给了我名字asset.jpg 你能详细说明吗更多如何使用它来将图像加载到 UIImage 实例中? 嗨。当然,从文件名获取真正的文件系统路径,您需要知道文件的存储位置,然后通过使用 NSString 的 stringByAppendingPathComponent: 组合它们来创建完整路径(目录 + 文件名)。这条规则的唯一例外是当您知道图像存储在应用程序包中,在这种情况下,您只需使用 [UIImage imageNamed:"name"] 调用即可为您完成全部工作。但在其他情况下,您必须指定完整路径。 您好,再次感谢您的回答。我仍然对如何使用此 NSString assets-library://asset/asset.JPG?id=1000000001&ext=JPG 将图像加载到 UIImage 感到困惑,我在将其转换为 NSString 后将[myUrl absoluteString] 的结果转换为保存。在这里,我在这方面提出了这个问题,但没有得到答案。如果您能回答我将不胜感激 [***.com/questions/8085267/… 是的,当你想与 NSFileManager 一起使用时,我们应该使用 myUrl.path 而不是 myUrl.absoluteString,谢谢 Viggo24!! 由于您有一个assets-library URL,而不是file,它与NSFileManager 不兼容。对此类 URL 的访问受到 ALAssetsLibrary 的严格控制。【参考方案3】:

在 Swift 中试试这个:

var urlString = myUrl.absoluteString

目标-C:

NSString *urlString = [myURL absoluteString];

【讨论】:

我使用了 NSString *urlString = [myURL absoluteString];但是我遇到了这个错误,xcode 崩溃了。 -[__NSCFString absoluteString]:无法识别的选择器发送到实例 0x791a18e0 @VõMaiTrinh 这意味着您的 myURL 是 NSString 类的对象。由于 NSString 没有 absoluteString 方法,所以它会导致崩溃。【参考方案4】:

快速更新:

var myUrlStr : String = myUrl.absoluteString

【讨论】:

你可以省略String,因为 Swift 使用类型推断。 你实际上应该省略String - Swift 设计指南试图实现尽可能少的冗余代码。【参考方案5】:

我刚刚和这个东西打了一架,这个更新没有用。

这最终在 Swift 中实现了:

let myUrlStr : String = myUrl!.relativePath!

【讨论】:

【参考方案6】:

您可以使用任何一种方式

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 :: file:///var/containers/Bundle/Application/E2D7570B-D5A6-45A0-8EAA-A1F7476071FE/RemoDuplicateMedia.app/loading_circle_animation.gif

【讨论】:

【参考方案7】:

在 Swift 中:- var str_url = yourUrl.absoluteString

它会产生一个字符串中的url。

【讨论】:

answer provided 4 years prior 的副本

以上是关于将 NSURL 转换为 NSString的主要内容,如果未能解决你的问题,请参考以下文章

将 NSURL 转换为 NSString

将 NSUrl 转换为 PHAsset iOS 8

将文件路径转换为文件 url[NSUrl]

将 NSMutableData 转换为 NSURL 用于 ios 中的视频

将NSURL转换为NSString

将 NSString 转换为 NSURL 时面临的问题