swift - 快速保存多行文本

标签 swift text nsfilemanager storing-data

我正在尝试将多行文本存储在 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)

关于swift - 快速保存多行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51706731/

相关文章:

ios - 如何使用 Swift 滚动 TextView 时重复动画?

Java:如何将绘制的文本动态地适合窗口

ios - React-native-sqlite-storage如何在iOS的文档目录中打开数据库

java - 如何优化正则表达式模式?

string - 在 AWK 中,如何拆分与 "record"具有相同字符串的连续行?

iphone - 如何让 SQLITE 数据库文件在 DropBox 中同步?

ios - 将文件从目录加载到 UIMAGE 不起作用

swift - 在 UIPanGestureRecognizer 之后显示标签

json - 尝试使用 Google Image API 在 Swift 中获取图像 URL

ios - 当设备旋转改变时创建附加约束