Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting initial directory for NSOpenPanel

I'm trying to get the user to select a file from a folder containing log files. So I want to display an NSOpenDialog showing the contents of that folder. I'm using Swift, so 10.9+

I see a number of threads on this topic here, but in spite of trying what appears to be the same code converted to Swift, it invariably returns to the Documents folder. Here's a sample:

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

The folder in question does exist, and copy and pasting the path into the Go to Folder... in the Finder goes right there. Any ideas?

like image 671
Maury Markowitz Avatar asked Jul 15 '26 08:07

Maury Markowitz


1 Answers

You need to expand the tilde and NSString has a hand method for this so:

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

+1 upvote for Martin for mentioning it.

like image 199
Adrian Sluyters Avatar answered Jul 18 '26 10:07

Adrian Sluyters