我试图让用户从包含日志文件的文件夹中选择一个文件。所以我想显示一个显示该文件夹内容的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 ...就在那里。有什么想法吗?
答案 0 :(得分:5)
你需要扩展tilde
,NSString有一个hand方法,所以:
let launcherLogPathWithTilde = "~/LauncherLogs" as NSString
let expandedLauncherLogPath = launcherLogPathWithTilde.stringByExpandingTildeInPath
fd.directoryURL = NSURL.fileURLWithPath(expandedLauncherLogPath, isDirectory: true)
+1赞成马丁提及它。