在 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)
我试图在 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)