Ios 由于未捕获异常而终止应用程序
我目前正在进行登录验证,并在firebase注册。我现在想让我的用户保持登录,这是可行的。我面临的问题是,当我注销时,我尝试重新登录,但收到以下错误: //由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“Receiver()没有标识符为“chatRoom”的segue”\ 这没有意义,因为当我第一次登录时,它会使用聊天室segue将我带到聊天室Viewcontroller 下面是我的代码:Ios 由于未捕获异常而终止应用程序,ios,swift,xcode,Ios,Swift,Xcode,我目前正在进行登录验证,并在firebase注册。我现在想让我的用户保持登录,这是可行的。我面临的问题是,当我注销时,我尝试重新登录,但收到以下错误: //由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“Receiver()没有标识符为“chatRoom”的segue”\ 这没有意义,因为当我第一次登录时,它会使用聊天室segue将我带到聊天室Viewcontroller 下面是我的代码: func handleLogin() {
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)
}
}
固定的。我删除了let loginController=LoginViewController(),
我创建了一个新的segue,现在做self.performSegue(带有标识符:“logOut”,发件人:self)工作正常您的问题与您的title@J.Doe这样更好吗?你的错误与注销和Firebase无关。你的标题很容易引起误解。这个错误可能是有道理的,因为当你注销时,你会让loginController=LoginViewController(),然后出现(…),而你不会调用故事板中带有
segue
的LoginViewController
。嗯,它“可能有意义”,但它缺少来自哪个类的信息,这些代码等等@Larme ok你想让我上传我的loginViewController吗?