2016-05-16 3 views
1

Я пытаюсь сохранить сеанс пользователя с помощью NSUserDefaults, если пользователь вошел в систему, я установил NSUserDefaults в true и наоборот. Однако мой пользователь постоянно застрял на странице входа, даже если введены правильные учетные данные. Как я могу это исправить?Условная загрузка ViewControllers застряла в начальном 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() 
} 
+0

handlingAuthentication как вы называете этот метод –

+0

Привет @PKT Я вызвал свой метод в моем LoginViewController (обновил мой пост, чтобы показать это) – noobdev

+0

, пожалуйста, дайте строку, где она застрянет –

ответ

0

Вы используете разные ключи:

Поскольку вы хранящие на ключ «isUserLoggedIn»

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

isUserLoggedIn всегда будет ложным, потому что вы получаете другой ключ «IsUserLoggedIn»

let isUserLoggedIn = NSUserDefaults.standardUserDefaults().boolForKey("IsUserLoggedIn") 
Смежные вопросы