Firebase Error Value типа 'AuthDataResult' не имеет члена 'displayName' - PullRequest
0 голосов
/ 27 мая 2018

Я продолжаю курс Роба Персиваля для 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 для бэкэнда этого кода, и регистрация учетных записей пользователей работает нормально, если я удаляюнеисправный код.У кого-нибудь есть идеи?

Вы можете видеть точный вид на этом скриншоте:

Screenshot of the error

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

поставить user?.user.displayName вместо user?.displayName

0 голосов
/ 02 июня 2018

Google обновил методы после обновления Firebase 5+, попробуйте это

self.name = user.user. displayName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...