【问题标题】:Terminating app due to uncaught exception Swift由于未捕获的异常Swift而终止应用程序
【发布时间】:2017-07-12 17:26:41
【问题描述】:

我目前正在使用登录身份验证,以及在 firebase 注册。我现在想让我的用户保持登录状态,这是有效的。我面临的问题是当我注销时,我尝试重新登录并收到此错误: // 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'Receiver () has no segue with identifier 'chatRoom''\ 这没有任何意义,因为当我第一次登录时,它会将我带到使用 chatRoom segue 的 ChatRoom Viewcontroller。

下面是我的代码:

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

【问题讨论】:

  • 你的问题与你的标题无关
  • @J.Doe 这样更好吗?
  • 您的错误与注销和 Firebase 无关。您的标题非常具有误导性。
  • 该错误可能是有道理的,因为当您注销时,您执行的是let loginController = LoginViewController(), then present(...),并且您没有调用故事板中带有segueLoginViewController。好吧,它“可能有意义”,但缺少该代码是什么类等信息。
  • @Larme 好的,你想让我上传我的 loginViewController 吗?

标签: ios swift xcode


【解决方案1】:

已修复。我删除了 let loginController = LoginViewController(), 我创建了一个新的 segue,现在执行 self.performSegue(withIdentifier: "logOut", sender: self),完美运行

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 2015-08-20
    • 2014-11-03
    • 2014-01-05
    • 2015-09-21
    • 1970-01-01
    相关资源
    最近更新 更多