首页 > 解决方案 > UserDefaults 自动登录不起作用

问题描述

因此,当用户第一次打开我的应用程序时,他们会看到一个带有按钮的视图,用于继续登录或注册。在我的登录视图中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时会调用它。尽管我使用 UserDefaults 来存储登录状态,但我的应用程序不会自动直接进入我的仪表板视图。任何想法为什么?

// Firebase auth in doLogin action (Login VC)

Auth.auth().signIn(withEmail: un, password: pw)
{
    (resp, err) in if (err == nil && resp != nil)
    {
        if (resp!.user.isEmailVerified)
        {

            // segue from Login VC to Dashboard VC will be exectuted

            self.performSegue(withIdentifier: "loggedin", sender: nil)


            // store the logged in state as true for the future

            UserDefaults.standard.set(true, forKey: "loggedin")

            UserDefaults.standard.synchronize()

        }
    }
}

这是主视图控制器的代码,用于确定它是否应该直接进入仪表板。

func loggedIn() -> Bool {

    // determine if the user is still logged into the app

    return UserDefaults.standard.bool(forKey: "loggedin")

}


override func viewDidLoad() {

    super.viewDidLoad()


    if (loggedIn())
    {

        // logged in, return to the dashboard view controller

        performSegue(withIdentifier: "persisted", sender: nil)

    }

}

我尝试过使用打印语句,但无论loggedIn出于何种原因,该函数都没有被执行,或者控制台中充斥着 Firebase 调试日志语句,甚至无法看到这些语句。

标签: iosswiftfirebasepersistencensuserdefaults

解决方案


您必须将主视图控制器嵌入到 aUINavigationController中才能使persistedsegue 工作。


推荐阅读