为 NSOpenPanel 设置初始目录

Setting initial directory for NSOpenPanel

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

我在这里看到了很多关于这个主题的话题,但是尽管尝试将看似相同的代码转换为 Swift,但它总是 returns 到 Documents 文件夹。这是一个示例:

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

有问题的文件夹确实存在,将路径复制并粘贴到 Finder 中的“转到文件夹...”中即可。有什么想法吗?

您需要扩展 tilde 并且 NSString 对此有一个 hand 方法:

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

+1 票赞成 Martin 提到它。