【问题标题】:Firebase Error Value of type 'AuthDataResult' has no member 'displayName'“AuthDataResult”类型的 Firebase 错误值没有成员“displayName”
【发布时间】: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。
  • 有什么解决办法吗?

标签: ios swift firebase


【解决方案1】:

Google 在 Firebase 5+ 更新后更新了方法 试试这个

self.name = user.user.displayName

【讨论】:

    【解决方案2】:

    user?.user.displayName代替user?.displayName

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多