You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何去除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 23:42:11