如何去除NSSavePanel::url::path返回路径中的转义字符?
macOS下NSSavePanel获取未转义文件路径的解决方法
你在macOS应用中使用以下代码让用户选择保存文件:
let panel = NSSavePanel() let resp = panel.runModal() if(resp == .OK) { let strFilePath = panel.url?.path(); }
遇到的问题是,获取到的路径会对空格等字符进行URL转义,期望得到:
/Users/user/Documents/file 2.txt
实际得到:
/Users/user/Documents/file%202.txt
解决方法
问题出在你错误调用了path()方法(Swift中URL类型并没有这个实例方法),正确的做法是使用URL的path属性,它会直接返回未转义的本地文件系统路径:
let panel = NSSavePanel() let resp = panel.runModal() if resp == .OK { if let strFilePath = panel.url?.path { // strFilePath 即为未转义的路径,例如:/Users/user/Documents/file 2.txt } }
另外,在现代Swift版本中,也可以使用URL的filePath属性,它和path属性效果一致,专门用于获取本地文件系统路径:
let strFilePath = panel.url?.filePath
内容的提问来源于stack exchange,提问作者c00000fd
相关产品推荐
相关产品推荐

