我在弄清楚如何在SwiftUI @EnvironmentObject
实例中保存数据时遇到了麻烦。我在@EnvironmentObject
文件中创建了一个UserData
类型的实例SceneDelegate
,然后将该实例传递到我的根视图中,然后由其他视图访问和修改。
我的问题是,在用户关闭并重新打开应用后,如何将数据保存在这样的实例中以进行访问?
例如,我在hasDoneSetup
实例中有一个UserData
属性,默认为false,因此,首次安装序列仅在应用程序首次打开时运行。设置完成后,设置顺序会消失,这是正确的并且可以正常工作。但是,当我关闭并重新打开该应用程序时,似乎会创建一个新的UserData
实例,因为安装顺序会再次运行。
这是我的SceneDelegate
代码中的一部分:
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
// Other properties omitted
var userData = UserData()
// Other code omitted
// Use a UIHostingController as window root view controller
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
// This line is where I pass the UserData instance to my root view.
// I don't want to pass a new instance each time the app is opened however.
// Rather, I want to make a new instance only the first time the app is opened, and use that instance anytime the app is opened henceforth.
window.rootViewController = UIHostingController(rootView: MainScreen().environmentObject(userData))
self.window = window
window.makeKeyAndVisible()
// Other code omitted
}
我将不胜感激任何帮助!提前非常感谢您,希望您过得愉快! :)