NSOpenPanelで初期ディレクトリを指定したいこともあると思います。
そんな時はそのディレクトリの完全パスをString型で作成し、それからURL型を作成して、OpenPanelのdirectoryURLに設定します。
ここで問題になるのがユーザ名を含むユーザディレクトリの取得ですが、私はNSSearchPathForDirectoriesInDomainsでユーザディレクトリを含むパスを取得して、/で
文字列を分解して必要なパスを作成しています。
//ユーザディレクトリが欲しいなら、NSSearchPathDomainMask.userDomainMaskを指定するのが良いかなと思います。
let appDir = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true);
//ここでは目的のディレクトリを指定するパスを作るためにユーザディレクトリの直下のライブラリのパスを作っています。
//イメージは「/Users/oboro/Library/」という感じです。
let splitPath = appDir[0].split(separator: "/")
var ret = "/" + splitPath[0] + "/" + splitPath[1] + "/"
ret = ret + splitPath[2] + "/"
//URL型を作ります。
let myURL = URL(fileURLWithPath: ret, isDirectory: true)
let op = NSOpenPanel()
//ここで初期ディレクトリを設定しています。
op.directoryURL = myURL
op.canChooseFiles = true
op.canChooseDirectories = false
op.allowsMultipleSelection = false
op.allowedFileTypes = ["txt", "csv", ""]
//オープンパネルを開きます。
if op.runModal() == NSApplication.ModalResponse.OK {
//ここに処理を入れます。
self.fileName = (op.url!.absoluteString as! NSString).lastPathComponent
}
