朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
Swift NSOpenPanelを開いた時の初期ディレクトリの設定の仕方





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
            }
        








良いやや良い普通やや悪い悪い

投稿日時評価コメント