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