2017-07-12 12 views
0

私は現在ログイン認証とfirebaseの登録を行っています。私は現在、ユーザーのログインを維持したいと思っています。これは動作しています。 //キャッチされていない例外 'NSInvalidArgumentException'、理由: 'Receiver()に識別子' chatRoom 'のセグがないため、アプリケーションを終了しています。 '\ 最初にログインすると、chatRoom segueを使ってChatRoom Viewcontrollerに送られてくるので、意味がありません。固定キャッチされていない例外によるアプリケーションの終了Swift

func handleLogin() { 
     guard let email = emailTextField.text, let password = passwordTextField.text 
      else { 
      print("Form is not valid") 
      return 
     } 
     Auth.auth().signIn(withEmail: email, password: password, completion: { (user, error) in 

      if error != nil { 
       print(error!.localizedDescription) 
       self.loginErrorAlert("Error!", message: "Username or password incorrect, please try again.") 
       return 
      } 
      // successfully logged in our user and keep user logged in until they logout 
      if Auth.auth().currentUser != nil { 
       UserDefaults.standard.set(Auth.auth().currentUser!.uid, forKey: "loggedIn") 
       UserDefaults.standard.synchronize() 
      self.performSegue(withIdentifier: "chatRoom", sender: self)// this is the error I am facing 
      } 
     }) 
    } 
    func handleRegister() { 
     guard let email = emailTextField.text, let password = passwordTextField.text, let name = nameTextField.text else { 
      print("Form is not valid") 
      signupErrorAlert("Error!", message: "Could not be Registered at this time, please try again.") 
      return 
     } 
     Auth.auth().createUser(withEmail: email, password: password, completion: { (user: User?, error) in 

      if error != nil { 
       print(error!.localizedDescription) 
       self.loginErrorAlert("Error!", message: "Could not be Registered at this time, please try again later.") 
       return 
      } 

      guard let uid = user?.uid else { 
       return 
      } 
      // successfully authenticated user and keep logged in until they logout 
      let ref = Database.database().reference(fromURL: "https://boccighub.firebaseio.com/") 
      let usersReference = ref.child("users").child(uid) 
      let values = ["name": name, "email": email] 
      usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in 

       if err != nil { 
        print(err!.localizedDescription) 
        return 
       } 
       if Auth.auth().currentUser != nil { 
        UserDefaults.standard.set(Auth.auth().currentUser!.uid, forKey: "loggedIn") 
        UserDefaults.standard.synchronize() 
        self.performSegue(withIdentifier: "chatRoom", sender: self) 
       } 
      }) 
     }) 
    } 
    // User logged out 
    @IBAction func handleLogout(_ sender: Any) { 
     do { 
      try Auth.auth().signOut() 
      print("user signedout") 

      if Auth.auth().currentUser == nil { 
       print("No user, key removed") 
       UserDefaults.standard.removeObject(forKey: "loggedIn") 
       UserDefaults.standard.synchronize() 
       print("User logged out") 
       let loginController = LoginViewController() 
       present(loginController, animated: true, completion: nil) 
      } 
     } catch let logoutError { 
      print(logoutError) 
     } 
    } 
+1

あなたの問題は、あなたのタイトル –

+0

とは何の関係もありません@ J.Doeはそれが良いですか? –

+0

あなたのエラーは、ログアウトやFirebaseとは関係ありません。あなたのタイトルは非常に誤解を招く。 – Elhoej

答えて

0

これは、以下の私のコードです。私は新しいセグエを作成LET loginController = LoginViewController()、 を削除し、現在(withIdentifier:「ログアウト」、送信者:自己)self.performSegueを行い、完璧に動作

関連する問題