2016-03-31 4 views
2

Я использую Firebase в качестве задней части и закодировал часть входа. Когда я вхожу в систему с тестовой учетной записью, отладчик печатает «Logged In :. Однако, когда я пытаюсь перейти к главному контроллеру представления, я получаю ошибку« фатальная ошибка: неожиданно найден nil при развертывании необязательного значения «Конец разрывается на линии self.presentviewcontroller. что я делаю неправильно здесь?Как представить различные ViewController после успешного входа в систему

if email != "" && password != "" 
    { 
     FIREBASE_REF.authUser(email, password: password, withCompletionBlock: {(error, FAuthData) -> Void in 

      if error == nil 
      { 
       NSUserDefaults.standardUserDefaults().setValue(FAuthData.uid, forKey: "uid") 

       print("logged in") 
       self.logoutButton.hidden = false 

       let storyboard = UIStoryboard(name: "Main", bundle: nil) 
       let secondViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController 
       self.presentViewController(secondViewController, animated: true, completion: nil) 

      } 
      else{ 
       print("The user was not logged in") 
      } 

     }) 
    } 
    else{ 
     let alert = UIAlertController(title: "ERROR", message: "Please Enter Email and Password", preferredStyle: .Alert) 
     let action = UIAlertAction(title: "OK", style: .Default, handler: nil) 
     alert.addAction(action) 
     self.presentViewController(alert, animated: true, completion: nil) 
    } 

ответ

0

Проверка на главном раскадровки, которые вы установили идентификатор ViewController к вашему ViewController.

0

вы должны будете использовать observeAuthEventWithBlock метод, который прослушивает для аутентифицированного состояния в реальном времени.

override func viewDidAppear() { 
    let ref = Firebase(url: "https://<YOUR-FIREBASE-APP>.firebaseio.com") 

    ref.observeAuthEventWithBlock({ authData in 
    if authData != nil { 
     // user authenticated 
     print(authData) 
     self.performSegueWithIdentifier("LoginToOtherView", sender: nil) 
    } else { 
     // No user is signed in 
    } 
    }) 
} 

Вы слушаете viewDidAppear, поэтому он продолжает срабатывать, даже если вы спуститесь в навигационный стек.

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