본문 바로가기

Programing/My OSS

[Contact] 파일열기 다이얼로그: NSOpenPanel

드래그 앤 드롭 으로 구현을 하려고 했는데 너무 러닝 커브가 커서 파일 열기 다이얼로그로 작성을 했다.

 

코드 스니핏

import Cocoa

func openDialog(_ sender: Any) {
        let panel = NSOpenPanel();
        panel.canChooseFiles = true;
        panel.canChooseDirectories = true;
        panel.resolvesAliases = false;
        panel.allowsMultipleSelection = true;
        
        if (panel.runModal() ==  NSApplication.ModalResponse.OK) {
            if (panel.urls.count > 0) {
                for url in panel.urls {
                    print(url.path)
                }
            }
        }
    }

관련 문서들

Apple Deloper - NSOpenPanel

macOS 10.15(Catalina) 이후에는 앱이 sandboxed 와 관계없이 별도의 프로세스에서 동작하게 되는 것으로 바뀌었다고 한다.

ourcodeworld 

버전 관련 호환성

NSOpenPanel의 isAccessoryViewDisclosed 는 10.11(El Capitan) 이후에서만 지원이 된다.

URL의 hasDirectoryPath의 경우 10.11+ 에서 지원이된다.

for url in panel.urls {
    print(url.hasDirectoryPath)
    print(url.path)
}