UserDefaults 自动登录不起作用
UserDefaults Auto-Login isn't Working
因此,当用户首次打开我的应用程序时,他们会看到一个带有按钮的视图,用于继续登录或注册。在我的登录视图中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时调用它。尽管我使用 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)
}
}
我试过使用 print 语句,但是 loggedIn
函数由于某种原因没有被执行,或者控制台被 Firebase 调试日志语句淹没,甚至看不到这些。
您必须将主视图控制器嵌入 UINavigationController
才能使 persisted
segue 正常工作。
因此,当用户首次打开我的应用程序时,他们会看到一个带有按钮的视图,用于继续登录或注册。在我的登录视图中,我有一个按钮处理程序(通过操作附加),当用户按下登录按钮时调用它。尽管我使用 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)
}
}
我试过使用 print 语句,但是 loggedIn
函数由于某种原因没有被执行,或者控制台被 Firebase 调试日志语句淹没,甚至看不到这些。
您必须将主视图控制器嵌入 UINavigationController
才能使 persisted
segue 正常工作。