快速保存多行文本

Posted

技术标签:

【中文标题】快速保存多行文本【英文标题】:Saving multiple lines of text in swift 【发布时间】:2018-08-06 11:36:38 【问题描述】:

我正在尝试在 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 文档的新版本。

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

【问题讨论】:

***.com/questions/27327067/… 【参考方案1】:

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

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

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

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

【讨论】:

您的解决方案似乎是最简单的,尽管我在实际实现代码时遇到了一些问题:try writeString?.data(using: String.Encoding.utf8)?.write(to: fileURL, options: Data.writingOptions.withoutOverwriting) 我收到以下错误pastebin.com/raw/wradZ2hQ

以上是关于快速保存多行文本的主要内容,如果未能解决你的问题,请参考以下文章

多行文本文字过多显示 ...

打开多行文本文件并仅读取其中的特定行。并将值发送到文本框

delphi写多行文本文件操作

多行文本文件转列表解析成字典方法

java环境下用eclipse写的HelloWorld,写好后怎么保存工程啊?怎么才能生成在文本文档里?

如何用浏览器打开用记事本编写的代码