为什么@AppStorage默认值总是用UUID重新初始化?

问题描述 投票:0回答:1

应用程序启动后(第一次),我想为用户分配一个唯一的 ID(不是用于跟踪,也不是用于设备 ID,只是一个轻量级用户 ID,以便为后端提供绑定请求的内容)。

我在 SwiftUI (App.swift) 中有这行简单的代码:

@AppStorage("userId") var userId: String = UUID().uuidString

在同一个班级,我这样做:

init() {
    print("User ID: \(userId)")
}

每次运行此程序时,UUID 都是不同的。现在,我知道第一个反应可能是什么:这是由于模拟器和我使应用程序崩溃(通过重新运行它)。

但是,我尝试了以下操作,并收到了相同的结果(即每次启动时都有不同的 UUID):

  1. 在模拟器中运行,将应用程序向上拖动,这样就可以杀死它。不。
  2. 后台应用程序,给它时间,运行其他应用程序,将其拖上来并杀死它。不。
  3. 在真实手机上运行相同的操作(通过 XCode)。将其置于后台,一段时间后将其杀死。不。

这个线程似乎肯定是因为开发环境,但是我如何在开发中测试它呢?背景不适合我?

ios swiftui appstorage
1个回答
0
投票

初始值应该是一个空字符串,然后在创建用户时将其设置为

UUID
,例如

@AppStorage("userId") var userId: String = ""

func createUser() {
    userId = UUID().uuidString
}
© www.soinside.com 2019 - 2024. All rights reserved.