4

我正在使用此代码让用户选择指定名称和在磁盘上保存纯文本文件的位置。一切似乎都有效,但保存的文件没有任何扩展名。实际上我没有在我的代码的任何部分指定扩展,我阅读了 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()
            }
        }
    }
4

1 回答 1

5

添加行

mySave.allowedFileTypes = ["txt"]

在展示面板之前。

文档中:

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

如果用户未指定扩展名,则 allowedFileTypes 数组中的第一项将用作保存面板的扩展名。如果用户指定了不在数组中的类型,并且allowOtherFileTypes 为true,则在提示保存时将显示另一个对话框。

于 2017-03-17T12:02:10.797 回答