ViewController 秒的条件加载卡在初始 ViewController

Conditional loading of ViewControllers stuck at initial ViewController

我正在尝试使用 NSUserDefaults 保存用户会话,如果用户已登录,我会将 NSUserDefaults 设置为 true,反之亦然。但是,即使输入了正确的凭据,我的用户也永远停留在登录页面上。我该如何解决?

LoginViewController代码

func handlingAuthentication(notification: NSNotification) {

    let dict = notification.object as! NSDictionary
    let errorFound = dict["error"]
    let errorMessage = dict["message"]
    print(errorFound)

    if(errorFound){
         //initialize Alert Controller
        let alertController = UIAlertController(title: "Authentication error", message: errorMessage?.string, preferredStyle: .Alert)

        //Initialize Actions
        let okAction = UIAlertAction(title: "Ok", style: .Default){
                (action) -> Void in
                self.dismissViewControllerAnimated(true, completion: nil)
            }

        //Add Actions
        alertController.addAction(okAction)

        //Present Alert Controller
        self.presentViewController(alertController, animated: true, completion: nil)

    }
    else
    {
        NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")

        NSUserDefaults.standardUserDefaults().synchronize()

        self.dismissViewControllerAnimated(true, completion:nil)

    }

}

这是我在 LoginViewController

中调用方法 handlingAuthentication 的地方
@IBAction func loginBtn(sender: AnyObject) {
let loginobj = Login(userName : self.usernameField.text!, passWord : self.pwdField.text!)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.handlingAuthentication(_:)), name:"errorPresent", object: nil)
loginobj.getRequest()
}

HomeViewController代码

override func viewDidAppear(animated: Bool) {
    let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn")
    if(!isUserLoggedIn){
        self.performSegueWithIdentifier("toLoginVC", sender: self)
    }
}

@IBAction func logoutBtn(sender: AnyObject) {
    NSUserDefaults.standardUserDefaults().setBool(false, forKey: "isUserLoggedIn")
    NSUserDefaults.standardUserDefaults().synchronize()
}

您正在使用不同的密钥:

因为你存储在密钥上 "isUserLoggedIn"

NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")

isUserLoggedIn 将始终为 false,因为您获得的是不同的密钥 "IsUserLoggedIn"

let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn")