Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UserDefaults自动登录是';行不通_Ios_Swift_Firebase_Persistence_Nsuserdefaults - Fatal编程技术网

Ios UserDefaults自动登录是';行不通

Ios UserDefaults自动登录是';行不通,ios,swift,firebase,persistence,nsuserdefaults,Ios,Swift,Firebase,Persistence,Nsuserdefaults,因此,当用户第一次打开我的应用程序时,他们将看到一个带有按钮的视图,以继续登录或注册。在我的登录视图中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时会调用它。尽管我使用UserDefaults来存储登录状态,但我的应用程序不会直接自动进入仪表板视图。你知道为什么吗 // Firebase auth in doLogin action (Login VC) Auth.auth().signIn(withEmail: un, password: pw) { (resp, er

因此,当用户第一次打开我的应用程序时,他们将看到一个带有按钮的视图,以继续登录或注册。在我的登录视图中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时会调用它。尽管我使用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调试日志语句,以至于无法看到这些语句。

您必须将主视图控制器嵌入
UINavigationController
中,才能使
持久化工作。

为了澄清,我双击模拟器按钮并关闭应用程序。然后我尝试再次打开它。它没有直接进入仪表板,而是停留在主视图上。在其他地方肯定有错误。您的
AppDelegate
代码看起来怎么样?你的故事板设置是什么?除了配置Firebase应用程序并初始化名为
IQKeyboardManager
的Cocoa pod是我的故事板之外,我根本没有更改我的应用程序委托。后退按钮是通过代码中的操作来处理的,这就是为什么您在代码中看不到它们的原因。并且根本不调用您的
loggedIn
函数?