Сохранение в определенный файл несколько раз без перезаписи предыдущих данных - PullRequest
0 голосов
/ 30 марта 2019

Я пытаюсь создать простое приложение для ввода текста в Swift, которое является моим самым первым приложением, созданным на этом конкретном языке. Я могу создать файл и сохранить в нем текст. Квест, на котором я сейчас нахожусь, чтобы найти ответ, следующий:

Как сохранить несколько записей из моего NSTextField в одном файле с отметкой времени записи? Потому что каждый раз, когда я нажимаю «Сохранить», файл перезаписывается новой записью.

Вот мой код:

    @IBAction func saveTaskButtonClicked(_ sender: NSButton) {
    //save task function
    do {
        // get the documents folder url
        if let documentDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first {
            // create the destination url for the text file to be saved
            let fileURL = documentDirectory.appendingPathComponent("msrfile.txt")
            // define the string/text to be saved
            let text = taskEntry.stringValue
            // writing to disk
            // Note: if you set atomically to true it will overwrite the file if it exists without a warning
            try text.write(to: fileURL, atomically: false, encoding: .utf8)
            print("saving was successful")
            // any posterior code goes here
            // reading from disk
            let savedText = try String(contentsOf: fileURL)
            print("savedText:", savedText)   // "Hello World !!!\n"
        }
    } catch {
        print("error:", error)
    }
}

Редактировать (найденное решение):

Вот мой обновленный код

    @IBAction func saveTaskButtonClicked(_ sender: NSButton) {
    //save task function
    do {
        // get the documents folder url
        if let documentDirectory = FileManager.default.urls(for: .desktopDirectory, in: .userDomainMask).first {
            // create the destination url for the text file to be saved
            let fileURL = documentDirectory.appendingPathComponent("msrfile.txt")
            // define the string/text to be saved
            let text = taskEntry.stringValue + " " + dateOfTaskEntry.stringValue + "\n"
            let encoding = String.Encoding.utf8

            guard let data = text.data(using: encoding) else {
                throw FileWriteError.convertToDataIssue
            }
            if let fileHandle = FileHandle(forWritingAtPath: fileURL.path) {
                fileHandle.seekToEndOfFile()
                fileHandle.write(data)
            } else {
                try text.write(to: fileURL, atomically: false, encoding: encoding)
            }
            print("saving was successful")
            // any posterior code goes here
            // reading from disk
            let savedText = try String(contentsOf: fileURL)
            print("savedText:", savedText)   // "Hello World !!!\n"
        }
    } catch {
     print("error:", error)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...