Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to display NSSavePanel in MacOS?

I'm trying to show NSSavePanel (or any "Save File Dialog") on Mac OSX. I'm building COCOA application in XCode Version 9.3 (9E145) in Swift 4 (or 4.2? I'm not sure exactly).

I've tried everything...

Like this?

    let savePanel = NSSavePanel()
    savePanel.begin { (result) in
        if result.rawValue == NSApplication.ModalResponse.OK.rawValue {


        }
    }

this?

    let savePanel = NSSavePanel()
    savePanel.canCreateDirectories = true
    savePanel.showsTagField = false
    savePanel.nameFieldStringValue = "result.csv"
    savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
    savePanel.begin { (result) in
        if result.rawValue == NSApplication.ModalResponse.OK.rawValue {


        }
    }

many many other ways...

What am I missing? Thanks!

like image 598
Ish Thomas Avatar asked Sep 21 '18 03:09

Ish Thomas


1 Answers

Is your application sandboxed? (Project > Capabilities > App Sandbox)

If so, ensure that you change "File Access" for "User Selected File" to Read/Write.

When I do that, your first snippet works fine for me.

enter image description here

like image 176
TheNextman Avatar answered Nov 03 '22 07:11

TheNextman