【问题标题】:'AuthDataResult' has no member 'profileChangeRequest' [duplicate]“AuthDataResult”没有成员“profileChangeRequest”[重复]
【发布时间】:2021-06-22 12:03:48
【问题描述】:

大家还好吗?我希望你平安无事! 我正在研究 SWIFT 并且遇到了问题,老实说,我不知道如何解决它。谁能帮我? 下面是代码:

import UIKit
import Firebase

class CreateUserVC: UIViewController {
    
    @IBOutlet weak var emailTxt: UITextField!
    @IBOutlet weak var passwordTxt: UITextField!
    @IBOutlet weak var userNameTxt: UITextField!
    @IBOutlet weak var createBtn: UIButton!
    @IBOutlet weak var cancelBtn: UIButton!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        createBtn.layer.cornerRadius = 10
        cancelBtn.layer.cornerRadius = 10

        // Do any additional setup after loading the view.
    }
    
    @IBAction func createUserTapped(_ sender: Any) {
        
        guard let email = emailTxt.text,
              let password = passwordTxt.text,
              let userName = userNameTxt.text else { return }
        
        Auth.auth().createUser(withEmail: "", password: "", completion: { (user, error) in
            if let error = error {
                debugPrint("Error creating user: \(error.localizedDescription)")
            }
        
            let changeRequest = user.profileChangeRequest()
            changeRequest?.displayName = userName
            changeRequest?.commitChanges(completion: {(error) in
        })
    })
}
    
    @IBAction func cancelTapped(_ sender: Any) {
        
    }
}

enter image description here

【问题讨论】:

  • “用户”对象,类型为“AuthDataResult?”,没有您尝试调用的方法 profileChangeRequest()。检查是否正确调用了正确的方法。
  • user 是可选的,因为你有一个用户或一个错误,用户可能是 nil - 你“如果让展开”错误,必须为用户做同样的事情

标签: ios swift firebase google-cloud-firestore firebase-authentication


【解决方案1】:

Auth.auth.createUser 的完成块不是使用 User 对象调用的,而是使用可选的 AuthDataResult 对象调用的。因此,您需要通过检查 AuthDataResult 是否为 nil 来检查操作是否成功,从中检索用户对象,然后启动您的 profileChangeRequest:

Auth.auth().createUser(withEmail: "", password: "", completion: { (result, error) in
   guard let user = result?.user else {
      if let error = error {
         debugPrint("Error creating user: \(error.localizedDescription)")
      } else {
         debugPrint("Error creating user: unknown error")
      }
      return
   }

   let changeRequest = user.profileChangeRequest()
   changeRequest?.displayName = userName
   changeRequest?.commitChanges(completion: {(error) in
   })
})

【讨论】:

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