2016-03-31 8 views
2

Ich benutze Firebase als Backend und habe den Login-Teil programmiert. Wenn ich mich mit einem Testaccount anmelde, druckt der Debugger "Angemeldet:". Wenn ich jedoch versuche, zum Hauptansicht-Controller zu gehen, erhalte ich den Fehler "fataler Fehler: Unerwartetes gefunden Null beim Entpacken eines optionalen Werts" Der Code bricht auf der Linie self.presentviewcontroller. Was ist hier falsch mache?So stellen Sie verschiedene ViewController nach erfolgreicher Anmeldung vor

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) 
    } 

Antwort

0

überprüfen auf Ihrem Hauptstoryboard, die Sie Kennung ViewController auf Ihre Viewcontroller gesetzt.

0

Sie werden die observeAuthEventWithBlock Methode verwenden müssen, die zuhört für den authentifizierten Zustand in Echtzeit

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 
    } 
    }) 
} 

Sie hören ist viewDidAppear, so dass es weiter feuert, auch wenn Sie den Navigations-Stapel gehen.

Verwandte Themen