如何使用UserDefaults保存登录状态?

时间:2017-09-14 03:15:47

标签: ios swift login userdefaults

我正在为我的应用程序介绍,在swift 4中,但我介绍了一个问题。我有一个introController和HomeController视图,根视图是introController所以我想如果用户从introControll登录到HomeController,那么每当用户打开应用程序时,第一个视图出现的是HomController,(他们不需要再次登录)。

我认为在userDefaults内存储登录状态,我不希望我的应用使用Navigation,任何想法?请帮忙

提前致谢

2 个答案:

答案 0 :(得分:1)

当您登录时保存任何bool值,如下所示:

UserDefaults.standard.set("1", forKey: "isLogin")

在appdelegate中检查登录状态,如下所示:

if UserDefaults.standard.value(forKey: "isLogin") != nil{
            //Navigate to homeviewcontroller
 }else{
            //Navigate to rootviewcontroller
 } 

答案 1 :(得分:0)

这很简单

当用户成功登录时,您需要在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()

}

然后在didFinishLaunchingWithOptions的AppDelegate中返回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
}