我正在尝试在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文档。
非常感谢您的帮助。
答案 0 :(得分:0)
由于您使用写操作,因此它将覆盖之前写的任何内容。
尝试writeString?.write(收件人:fileURL,原子性:true,编码: String.Encoding.utf8)
您需要将一行文本添加到文件中,这不会覆盖以前编写的行。像这样:
writeString.data(using: String.Encoding.utf8)?.write(to: fileURL, options: Data.WritingOptions.withoutOverwriting)