【问题标题】:Setting initial directory for NSOpenPanel为 NSOpenPanel 设置初始目录
【发布时间】:2016-04-05 21:00:27
【问题描述】:

我试图让用户从包含日志文件的文件夹中选择一个文件。所以我想显示一个 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... 中就可以了。有什么想法吗?

【问题讨论】:

  • 我强烈认为您必须将波浪号扩展到实际路径...

标签: swift macos nsopenpanel


【解决方案1】:

你需要扩展 tilde 并且 NSString 对此有一个手动方法:

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

+1 支持 Martin 提及它。

【讨论】:

  • 这就是假设NSURL.fileURLWithPath 会进行扩展的结果... sigh
  • 我记得我也用这个把头撞到了墙上!就像用户友好的苹果设备和系统一样,它们当然对开发人员不友好,而且充其量也非常抽象。
猜你喜欢
  • 2010-11-13
  • 2016-06-25
  • 2017-12-21
  • 2017-10-15
  • 2013-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多