应用关闭后,我无法保存SwiftUI @EnvironmentObject类的实例

时间:2019-07-09 02:26:08

标签: ios swift xcode swiftui

我在弄清楚如何在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
}

我将不胜感激任何帮助!提前非常感谢您,希望您过得愉快! :)

0 个答案:

没有答案