设置NSOpenPanel的初始目录

时间:2016-04-05 21:00:28

标签: swift macos nsopenpanel

我试图让用户从包含日志文件的文件夹中选择一个文件。所以我想显示一个显示该文件夹内容的NSOpenDialog。我使用Swift,所以10.9 +

我在这里看到了很多关于这个主题的线程,但是尽管尝试了转换为Swift的相同代码,但它总是返回到Documents文件夹。这是一个样本:

    let fd: NSOpenPanel = NSOpenPanel()
    fd.directoryURL = NSURL.fileURLWithPath("~/LauncherLogs", isDirectory: true)
    fd.canChooseDirectories = false
    fd.canChooseFiles = true
    fd.allowedFileTypes = ["log"]
    fd.runModal()

有问题的文件夹确实存在,将路径复制并粘贴到Finder中的Go to Folder ...就在那里。有什么想法吗?

1 个答案:

答案 0 :(得分:5)

你需要扩展tilde,NSString有一个hand方法,所以:

let launcherLogPathWithTilde = "~/LauncherLogs" as NSString
let expandedLauncherLogPath = launcherLogPathWithTilde.stringByExpandingTildeInPath
fd.directoryURL = NSURL.fileURLWithPath(expandedLauncherLogPath, isDirectory: true)

+1赞成马丁提及它。