【问题标题】:Type "user?" had no member UID (Swift 3, Firebase)输入“用户?”没有成员 UID(Swift 3、Firebase)
【发布时间】:2016-11-02 18:02:43
【问题描述】:

我正在使用 Firebase 设置登录页面,但遇到了 uid 无法识别的错误。这是我的代码:

    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (FIRUser,error) in

        if error != nil {
            print(error)
            return

        }

        guard let uid = user?.uid else {
            return
        }

我也无法通过命令单击进入FIRUser,但是如果我去掉了保护语句,身份验证就可以正常工作了。

我已经导入了 Firebase 和 FirebaseDatabase(无法导入 FirebaseAuth,被划掉了),所以不是这样。

知道为什么我不能访问FIRUser 和使用uid 吗?

【问题讨论】:

    标签: swift firebase swift3 firebase-authentication


    【解决方案1】:

    您需要在闭包内创建变量user。改写你的函数。

    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user: FIRUser?, error: Error?) in
    
        if error != nil {
            print(error)
            return
    
        }
    
        guard let uid = user?.uid else {
            return
        }
    

    【讨论】:

    • 谢谢埃米尔!或者,我可以简单地将保护语句切换为使用 FIRUser 而不是用户吗?这样做是可行的,但作为一个初学者,我不确定我是否以这种方式而不是你的方式搞砸了其他东西。再次感谢!
    • @d0xi45 user 已经是 FIRUser 类型,如我更新的答案所示。当您将其写为(user, error) 而不是我的答案时,您只是选择不指定变量的类型。它喜欢做var x: Int = 5var x = 5。它们都是Int 类型,但它的编码风格。创建完成后,FIRUser.currentUser 也会更新。不同之处在于user 是一个局部变量,而FIRUser.currentUser 是全局变量,因此可以在您的应用程序中的任何位置访问。如果它有助于解决您的问题,请不要忘记接受并支持答案:)
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多