将 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的主要内容,如果未能解决你的问题,请参考以下文章