无法将类型为“用户”的返回表达式转换为类型为“用户”?从Firebase获取currentUser

问题描述

我是Swift的新手,无法返回用户吗? Firebase中currentUser的CURRENT_USER的值。我在下面有我的User类声明,它位于一个单独的UserApi文件中。非常感谢所有帮助!

var CURRENT_USER: User? {
        if let currentUser = Auth.auth().currentUser {
            return currentUser
        }
        return nil
    }

用户声明:

class User {
    var email: String?
    var profileImageUrl: String?
    var username: String?
    var id: String?
    var isFollowing: Bool?
}

extension User {
    static func transformUser(dict: [String: Any],key: String) -> User {
        let user = User()
        user.email = dict["email"] as? String
        user.profileImageUrl = dict["profileImageUrl"] as? String
        user.username = dict["username"] as? String
        user.id = key
        return user
    }
}

解决方法

由于您在项目中声明了User类型,因此User中的单词var CURRENT_USER: User? {会解析为您自己的User类型,而不是FirebaseAuth.User ,它在另一个模块中。

要解决此问题,请执行以下任一操作:

  • 将您自己的User重命名为UserInfo或;

  • 将前缀FirebaseAuth.添加到User来区分:

    var currentUser: FirebaseAuth.User? { Auth.auth().currentUser }
    

    您还可以添加一个typealias,为Firebase User提供一个不同的名称:

    typealias FirebaseUser = FirebaseAuth.User