macOS - 如何让 NSSavePanel 在文件名中添加文件扩展名



我使用此代码为用户提供指定名称和在磁盘上保存纯文本文件的位置的选择。一切似乎都正常,但保存的文件没有任何扩展名。实际上,我没有在代码的任何部分指定扩展名,我在没有通知的情况下阅读了NSSavePanel文档,其中解释了此选项。

这是我正在使用的代码:

    let textToExport = mainTextField.textStorage?.string
    if textToExport != "" {
        let mySave = NSSavePanel()
        mySave.begin { (result) -> Void in
            if result == NSFileHandlingPanelOKButton {
                let filename = mySave.url
                do {
                    try textToExport?.write(to: filename!, atomically: true, encoding: String.Encoding.utf8)
                } catch {
                    // failed to write file (bad permissions, bad filename etc.)
                }
            } else {
                NSBeep()
            }
        }
    }

添加行

mySave.allowedFileTypes = ["txt"]

在演示小组之前。

从文档中:

此属性的值指定用户可以保存的文件类型 文件为。文件类型可以是常见的文件扩展名或 UTI。这 此属性的默认值为 nil,表示任何文件 可以使用类型。(请注意,如果数组不是 nil 并且数组 不包含任何项目,将引发异常。

如果用户未提供扩展名,则 允许文件类型数组将用作保存的扩展名 面板。如果用户指定的类型不在数组中,并且 允许其他文件类型是真的,它们将呈现另一个 对话框(提示保存时(。

最新更新