Ios 写入文本文件并在Xcode 8和Swift 3中的应用程序重启期间保留更改

Ios 写入文本文件并在Xcode 8和Swift 3中的应用程序重启期间保留更改,ios,swift3,xcode8,Ios,Swift3,Xcode8,我正在尝试在一个名为data.txt的文本文件中执行非常简单的读、写和持久化操作,该文件存储在基本iOS应用程序的主项目文件夹中。这只是一个学习练习 我可以从data.txt读取预先存在的文本。当我写入文本文件并随后从中读取时,写入的文本就在那里 然而,如果我停止我的应用程序模拟器,书面文本就会消失 在应用程序重新启动时,是否有一个保持文件的技巧 这是我的密码: var originalData : String = "" //read from file print("reading fr

我正在尝试在一个名为data.txt的文本文件中执行非常简单的读、写和持久化操作,该文件存储在基本iOS应用程序的主项目文件夹中。这只是一个学习练习

我可以从data.txt读取预先存在的文本。当我写入文本文件并随后从中读取时,写入的文本就在那里

然而,如果我停止我的应用程序模拟器,书面文本就会消失

在应用程序重新启动时,是否有一个保持文件的技巧

这是我的密码:

 var originalData : String = ""

//read from file
print("reading from data file")
if let path = Bundle.main.path(forResource: "data", ofType: "txt") {
  do {
    originalData = try String(contentsOfFile: path, encoding: .utf8)
    print("originalData = \(originalData)")
  }
  catch {
    print(error)
  }
}

//write to file
let newData = "\(originalData), new text"
print("writing to data file")
if let fileURL = Bundle.main.url(forResource: "data", withExtension: "txt") {
  do {
    try newData.write(to: fileURL, atomically: false, encoding: String.Encoding.utf8)
  }
  catch let error as NSError {
    print("Failed writing to URL: \(fileURL), Error: " + error.localizedDescription)
  }
}

//read from file
print("reading from data file again")
if let path = Bundle.main.path(forResource: "data", ofType: "txt") {
  do {
    let moreData = try String(contentsOfFile: path, encoding: .utf8)
    print("moreData = \(moreData)")
  }
  catch {
    print(error)
  }
}
打印的输出为:

reading from data file
originalData = Line 1 of data file

writing to data file
reading from data file again
moreData = Line 1 of data file
, new text

但是,当我停止我的应用程序模拟器并打开data.txt时,内容只是:数据文件的第1行

您在这里尝试的操作没有意义,并且是严格禁止的:

if let fileURL = Bundle.main.url(forResource: "data", withExtension: "txt") {
  do {
    try newData.write(to: fileURL, atomically: false, encoding: String.Encoding.utf8)
  }

您的跑步应用程序不能更改应用程序包中的文件!这是严重的安全违规行为。将文件复制到沙盒文档文件夹中,并在那里使用它。然后,它将在重新启动应用程序期间持续存在。

哦,我不知道它被如此严重地锁定了。谢谢