[英]How to user UserDefaults to Save Logged in state?
i'm making introdution for my app, in swift 4 but i ran intro a problem. 我正在快速介绍我的应用程序,但我遇到了问题。 i have a introController and HomeController view,root view is introController so i want if user logged in to HomeController from introControll, then Whenever user open app, the first view appear is HomController, ( they don't need to login again ).
我有一个introController和HomeController视图,根视图是introController,所以我希望如果用户从introControll登录到HomeController,则每当用户打开应用程序时,出现的第一个视图就是HomController,(他们不需要再次登录)。
I think about store login state inside of userDefaults, i don't want my app use Navigation, any idea? 我想到了userDefaults内部的商店登录状态,我不希望我的应用使用导航,有什么主意吗? please help
请帮忙
thanks in advance 提前致谢
When you make login save any bool value like this: 当您登录时,保存任何布尔值,如下所示:
UserDefaults.standard.set("1", forKey: "isLogin")
In appdelegate check login state like this: 在appdelegate中检查登录状态,如下所示:
if UserDefaults.standard.value(forKey: "isLogin") != nil{
//Navigate to homeviewcontroller
}else{
//Navigate to rootviewcontroller
}
It's very simple 很简单
You need to save state in UserDefaults when user successfully logged in like that: [Swift 3, 4] 用户成功登录后,需要将状态保存在UserDefaults中,如下所示:[Swift 3,4]
/// call if user logged in
func saveLoggedState() {
let def = UserDefaults.standard
def.set(true, forKey: "is_authenticated") // save true flag to UserDefaults
def.synchronize()
}
Then in AppDelegate in didFinishLaunchingWithOptions before return true 然后在AppDelegate中的didFinishLaunchingWithOptions中,然后返回true
let def = UserDefaults.standard
let is_authenticated = def.bool(forKey: "is_authenticated") // return false if not found or stored value
if is_authenticated {
// user logged in
let homeController = HomeController() // create instance of HomeController or from Storyboard
window?.rootViewController = homeController // change rootViewController to HomeController
window?.makeKeyAndVisible() // show window
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.