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

时间:2017-03-17 11:28:30

标签: swift 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()
            }
        }
    }

1 个答案:

答案 0 :(得分:3)

添加行

mySave.allowedFileTypes = ["txt"]

在提交小组之前。

来自documentation

  

此属性的值指定用户可以保存的文件类型   该文件为。文件类型可以是公共文件扩展名,也可以是UTI。该   此属性的默认值为nil,表示任何文件   类型可以使用。 (注意,如果数组不是nil和数组   不包含任何项目,引发异常。)

     

如果用户没有给出扩展名,则第一项是   allowedFileTypes数组将用作保存的扩展名   面板。如果用户指定不在数组中的类型,和   allowsOtherFileTypes为true,它们将与另一个一起呈现   提示保存时的对话框。