Я слежу за курсом разработчиков 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)
}
}
})
}
}
}
}
}
По сути, я разрешаю пользователям регистрироваться в качестве одного из двух разных типов ролей («Лерер» или «Бенутцер»), и в зависимости от того, какую из них они выберут, они должны видеть разные экраны после входа в систему. Я использую Firebase для бэкэнда этот код и регистрация учетных записей пользователей работают нормально, если я удалю ошибочный код. У кого-нибудь есть идеи?
Вы можете увидеть точный вид на этом скриншоте:

какое-нибудь решение для этого?





Google обновил методы после обновления Firebase 5+ попробуй это
self.name = user.user.displayName
поставил user?.user.displayName вместо user?.displayName
Я предлагаю объединить эти три вложенных
if.