Невозможно записать строку в файл внутри функции «ОК» NSSavePanel - PullRequest
0 голосов
/ 28 июня 2018

По какой-то причине я могу записать строку в файл только вне функции NSSavePanel ok. Мне нужно написать это, как только пользователь скажет: «Хорошо, я хочу сохранить это».

Вот мой код:

//An IBAction that connects to the "Save" menu item.
@IBAction func SaveButton(_ sender: Any) {
    os_log("Save button pressed.")
    //Declares savePanel to be equal to NSSavePanel opens the save panel in a seperate window.
    let savePanel = NSSavePanel()
    savePanel.runModal()

    let textEntryController = EntryViewController()


    //Sets a placeholder of the text we're going to write.
    func ok(_ sender: Any?){

        let entryPath = savePanel.url
        let entryFieldContents = textEntryController.entryTextField!;
        let entryText = (entryFieldContents.textStorage as NSAttributedString?)?.string
        let entryContent = entryText
        do {
            try entryContent?.write(to: entryPath!, atomically: true, encoding: String.Encoding.utf8)
        } catch {
            // failed to write file – bad permissions, bad filename, missing permissions, or more likely it can't be converted to the encoding
        }

    }

1 Ответ

0 голосов
/ 28 июня 2018

Вместо использования runModal() вы должны использовать более современный синтаксис замыкания:

let savePanel = NSSavePanel()
savePanel.begin { (response) in
    if response == .OK {
        // write it here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...