swift - 如何在 MacOS 中显示 NSSavePanel?

标签 swift xcode macos io swift4

我试图在 Mac OSX 上显示 NSSavePanel(或任何“保存文件对话框”)。我正在 Swift 4(或 4.2?我不确定)的 XCode 版本 9.3 (9E145) 中构建 COCOA 应用程序。

我已经尝试了一切...

像这样?

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


        }
    }

这个?

    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 {


        }
    }

许多其他方式...

我错过了什么?谢谢!

最佳答案

您的应用程序是否已沙盒化? (项目 > 功能 > 应用沙箱)

如果是这样,请确保将“用户选择的文件”的“文件访问”更改为读/写。

当我这样做时,您的第一个代码片段对我来说效果很好。

enter image description here

关于swift - 如何在 MacOS 中显示 NSSavePanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52436057/

相关文章:

xcode - 平移 AudioKit 的 AKMetronome

ios - Xcode 错误 - UIView 中的预期声明

ios - 当使用手势关闭呈现的 View Controller 时如何获得通知?

objective-c - Swift/Obj-C 互操作 : Prevent bridging of Foundation classes?

ios - 为什么它无法识别扩展中的这种类型?

ios - UIWindowSceneSessionRoleApplication 的 Info.plist 配置 "(no name)"

objective-c - 是否可以使用 NSBezierPath 用特定模式填充 NSRect?

ios - 在 Swift CLI 中使用 GCD

macos - 无法链接到 XCode4 中的 SDL!

arrays - 在 Swift 中将坐标字符串转换为 CLLocations 数组