【发布时间】:2018-05-27 15:35:23
【问题描述】:
我正在学习 Rob Percival 的 iOS 开发人员课程,目前我正忙于“Uber clone”项目。以下是有问题的代码的摘录。发生错误的代码行是:
if user?.displayName == "Lehrer" {
在评论//LOG IN之后发现
@IBAction func topTapped(_ sender: Any) {
if emailTextField.text == "" || passwordTextField.text == "" {
displayAlert(title: "Achtung", message: "Du musst sowohl eine Email-Adresse als auch Passwort eingeben!")
} else {
if let email = emailTextField.text {
if let password = passwordTextField.text {
if signUpMode {
// SIGN UP
Auth.auth().createUser(withEmail: email, password: password, completion: { (user, error) in
if error != nil {
self.displayAlert(title: "Error", message: error!.localizedDescription)
} else {
if self.benutzerLehrerSwitch.isOn {
//Lehrer
let req = Auth.auth().currentUser?.createProfileChangeRequest()
req?.displayName = "Lehrer"
req?.commitChanges(completion: nil)
self.performSegue(withIdentifier: "lehrerSegue", sender: nil)
} else {
// RIDER
let req = Auth.auth().currentUser?.createProfileChangeRequest()
req?.displayName = "Benutzer"
req?.commitChanges(completion: nil)
self.performSegue(withIdentifier: "benutzerSegue", sender: nil)
}
}
})
} else {
// LOG IN
Auth.auth().signIn(withEmail: email, password: password, completion: { (user, error) in
if error != nil {
self.displayAlert(title: "Error", message: error!.localizedDescription)
} else {
if user?.displayName == "Lehrer" {
// BENUTZER
self.performSegue(withIdentifier: "benutzerSegue", sender: nil)
} else {
// LEHRER
self.performSegue(withIdentifier: "lehrerSegue", sender: nil)
}
}
})
}
}
}
}
}
基本上,我允许用户注册为两种不同类型的角色之一(“Lehrer”或“Benutzer”),根据他们选择的角色,他们在登录后应该会看到不同的屏幕。我使用 Firebase如果我删除错误代码,此代码的后端和注册用户帐户工作正常。有人有什么想法吗?
您可以在此屏幕截图中看到确切的外观:
【问题讨论】:
-
我建议合并这三个嵌套的
ifs。 -
有什么解决办法吗?