2016-01-25 3 views
0

Я ранее писал эту функцию, и она отлично работала. Я снова начал работу над проектом после недельного перерыва, и тот же код не работает. Я что-то упустил? В основном, если нажата кнопка, будет запущен checkCredentials. Все в разделе «еще» работает полностью нормально, но раздел if user != nil не работает:UIViewController не удается перейти на другую страницу в swift

func checkCredentials(){ 
    PFUser.logInWithUsernameInBackground(usernameLoginTxt.text!, password: passwordLoginTxt.text!){ 
    (user:PFUser?, error:NSError?) -> Void in 
    if user != nil{ 


     let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc: UIViewController = storyboard.instantiateViewControllerWithIdentifier("SearchViewController") as UIViewController 
     self.presentViewController(vc, animated: false, completion:nil) 
     NSLog("it was successfull dude") 

    }else{ 

     let title = "Warning!" 
     let message = "You have entered the wrong username or password.\n Please try again!" 
     let okButton = "Ok" 
     let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
     let okayButton = UIAlertAction(title: okButton, style: UIAlertActionStyle.Cancel, handler: nil) 
     alert.addAction(okayButton) 

     self.presentViewController(alert, animated: true, completion: nil) 
    } 
    } 
} 
+1

Есть ли значение в 'error'? Похоже, что что-то может быть неправильным с запросом Parse –

+0

Можете ли вы уточнить, видите ли вы сообщение NSLog? Если нет, то либо пользователь == nil и ваш код не выполняются, либо весь обработчик завершения не выполняется (возможно, из-за ошибки в ответе). На самом деле, позже объяснил бы, почему он работал неделю назад и не работает сейчас :) –

ответ

0

Это должно работать для вас ...

func login(){ 
     let user = PFUser() 
     user.username = userNameText.text 
     user.password = passwordText.text 

    PFUser.logInWithUsernameInBackground(userNameText.text!, password: passwordText.text!, block: { 
     (user: PFUser?, Error: NSError?) -> Void in 

     if Error == nil { 

      dispatch_async(dispatch_get_main_queue()) { 
       let Storyboard = UIStoryboard(name: "Main", bundle: nil) 
       let AfterLoginVC: UIViewController = Storyboard.instantiateViewControllerWithIdentifier("AfterLoginVC") as! UINavigationController 
       self.presentViewController(AfterLoginVC, animated: true, completion: nil) 
      } 

     } else { 
    let title = "Warning!" 
    let message = "You have entered the wrong username or password.\n Please try again!" 
    let okButton = "Ok" 
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
    let okayButton = UIAlertAction(title: okButton, style: UIAlertActionStyle.Cancel, handler: nil) 
    alert.addAction(okayButton) 

    self.presentViewController(alert, animated: true, completion: nil) 
     } 
    }) 
} 

Также убедитесь, что в течение последнего неделю, вы случайно не изменили свой ключ клиента Parse (я сделал это раньше), что приведет к тому, что он не покажет какую-либо ошибку, а просто не сработает.

Смежные вопросы