2016-03-31 17 views
2

私はFirebaseをバックエンドとして使用しており、ログイン部分をコーディングしています。私がテストアカウントでログインすると、デバッガは "Logged In:"というメッセージを表示します。しかし、メインビューコントローラに移動しようとするとエラーが発生します。致命的なエラー:アンラッピング中に予期せずnilが見つかりました "ラインself.presentviewcontrollerに。ここで間違って何をしているのですか?あなたのViewControllerに識別子ViewControllerを設定する自分のメインストーリーボード上のログイン成功後に別の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

チェックを。

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なので、ナビゲーションスタックを降りても発火し続けます。

関連する問題