首页 > 解决方案 > 无法将类型“用户”的返回表达式转换为返回类型“用户?” 从 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
    }
}

标签: swiftapioptionaloptional-valuesuser-identification

解决方案


由于您已在项目中声明了一个类型,因此inUser一词将解析为您自己的类型,而不是另一个模块中的 .Uservar CURRENT_USER: User? {UserFirebaseAuth.User

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

  • 将您自己的名称重命名UserUserInfo, 或;

  • 添加前缀FirebaseAuth.User区分:

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

    您还可以添加 atypealias来给 FirebaseUser一个不同的名称:

    typealias FirebaseUser = FirebaseAuth.User
    

推荐阅读