在 swift 中保存多行文本

Saving multiple lines of text in swift

我试图在 iphone 上的本地文本文件中存储多行文本。我有代码可以创建一个文本文档,将数据写入该文档并从该文档读取数据。

但是,如果我尝试向该文档添加更多文本,它只会存储最近添加的文本行。

我用于创建、编写和阅读此文档文本的代码如下:

//Storing user rewards
    let fileName = "Rewards"
    let DocumentDirURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let fileURL = DocumentDirURL.appendingPathComponent(fileName).appendingPathExtension("txt")

   //print("File Path: \(fileURL.path)")

    let writeString = rewardLBL.text
   do {
        //writing to the file
        try writeString?.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8)
    } catch let error as NSError{
        print("failed to write")
        print(error)
    }

    var readString = ""
    do {
        readString = try String(contentsOf: fileURL)
    }catch let error as NSError{
        print("failed to readFile")
        print(error)
    }

    print(readString)

我需要它来允许存储多个文本条目,而不仅仅是最近写入的数据。

我怀疑由于代码在 'viewDidLoadi()' 方法中,它不断地重新创建相同的文档,因此总是创建一个覆盖旧 Rewards.txt 文档的新版本。

非常感谢任何帮助,谢谢。

由于您使用的是write,它会覆盖之前写入的任何内容。

try writeString?.write(to: fileURL, atomically: true, encoding: String.Encoding.utf8)

您需要在文件中追加一行文本,这不会覆盖之前写入的行。像这样:

writeString.data(using: String.Encoding.utf8)?.write(to: fileURL, options: Data.WritingOptions.withoutOverwriting)