swift 重新打开应用程序后JSON文件重置

ulydmbyx  于 2023-02-21  发布在  Swift
关注(0)|答案(1)|浏览(149)

我在一个json文件中存储了一些用户凭据(电子邮件,密码,昵称)。当我在模拟器上打开应用程序并创建多个测试帐户时,所有操作都很完美。

import Foundation

var users: [UserCredentials] = []

func save (email: String, password: String, nickname: String) {
    let newUsers = UserCredentials(email: email, password: password, nickname: nickname)
    users.append(newUsers)
    
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted
    
    do {
        let data = try encoder.encode(users)
        let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("users.json")
        print(url.path)
        try data.write(to: url)
    } catch {
        print("Error encoding JSON: \(error)")
    }
}

当我重置应用程序并输入新的testuser时,这个问题出现了。json文件重置,而不是加载我之前保存的testuser。有没有一种方法,即使我重新启动模拟器,用户仍然保存在一个文件中?
复位前:

```JSON
    [
  {
    "email" : "beforereset@yahoo.com",
    "nickname" : "beforereset12",
    "password" : "test1234A"
  },
  {
    "email" : "beforereset1@yahoo.com",
    "nickname" : "beforereset123",
    "password" : "test1234A"
  }
]

    ```

复位后:

```JSON
[
  {
    "email" : "afterreset@yahoo.com",
    "nickname" : "afterreset12",
    "password" : "1234testA"
  }
]

重置前的邮件在哪里?
new9mtju

new9mtju1#

这条线

try data.write(to: url)

...删除现有文件的内容并替换它们。因此每次save运行时,文件以前的内容都会丢失。(当然,除非您在保存之前将这些内容从文件读入users。但是您向我们展示的代码都没有这样做,所以我不得不得出结论,您根本没有这样做。)
重置前的邮件在哪里?
不见了你把它们删了。

相关问题