SwiftUI @AppStorage 并不总是持久值

SwiftUI @AppStorage not always persisting value

我正在使用 @AppStorageString 属性。当更改 属性 的值时,视图会自动更新以反映预期的更改。然而,大多数时候它并没有持续 UserDefaults。我觉得我在这里错过了一些东西的想法很愚蠢。还有其他人看到了吗?

步骤:

环境:

非常简单的例子:

struct ContentView: View {
    @AppStorage("token") var token: String = ""

    var body: some View {
        Form {
            Section("Token") {
                Text(token)
            }

            Section("Debug") {
                Button("Update 01") {
                    token = "token-01"
                }

                Button("Update 02") {
                    token = "token-02"
                }
            }
        }
    }
}

这种典型情况可能发生在开发阶段,但不会发生在生产阶段,因为用户没有像 Xcode 和 UserDefault class 这样的停止按钮,在应用程序被系统终止之前将更改写入磁盘.

所以我们知道用户的默认数据库是异步写入磁盘的,所以当我们从 Xcode 上的停止按钮停止应用程序时,我们对默认所做的更改可能不会写入数据库,您可以通过滑动停止应用程序自己尝试,您的数据将在下次启动时存储,但是当您从 Xcode 停止时,您的数据将不会被保存