视图控制器的条件加载卡住在初始ViewController
问题描述:
我想保存用户的会话与NSUserDefaults,如果用户登录,我会将NSUserDefaults设置为true,反之亦然。但是,即使输入了正确的凭证,我的用户也永远停留在登录页面上。我该如何解决它?视图控制器的条件加载卡住在初始ViewController
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)
}
}
这是我调用该方法handlingAuthentication在LoginViewController
@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将永远是假的,因为你得到一个不同的密钥“IsUserLoggedIn”
let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn")
handlingAuthentication如何调用此方法 –
嗨@PKT我在我的LoginViewController中调用了我的方法(更新了我的帖子以显示此内容) – noobdev
请给出它卡住的行 –