返回用户数据的函数不会返回null而不是检索到的数据

时间:2019-01-11 19:12:19

标签: ios swift database firebase

我正在尝试创建一个函数,该函数使我更容易通过使用UID和所需字段从Firebase数据库中获取用户数据。当我尝试返回检索到的数据时,会出现问题。检索到的数据可以正常打印,但是当我尝试使用它来设置变量的值时,它为null。

这是使用Firebase Auth和Firebase数据库

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.white
    if(Auth.auth().currentUser != nil) {
        var uid : String!
        let currentUser = Auth.auth().currentUser
        uid = currentUser!.uid
        if let uid = uid {
            let username = getUserData(uid: uid, data: "username")
            print("Username:", username))
        }
    } else {
        print("User not logged in!")
    }

}

func getUserData(uid: String!, data: String!) -> String {

    let uid = uid
    var uData:String = ""
    let ref = Database.database().reference()

    ref.child("users").child(uid!).observeSingleEvent(of: .value, with: {(snapshot) in
        let value = snapshot.value as? NSDictionary
        uData = value?[data] as? String ?? ""
        return
    })
    return uData

}

我不确定为什么将username =“”而不是将username设置为返回函数的值。谁能向我解释如何解决此问题,以及为什么它无法按照我认为的方式工作?

0 个答案:

没有答案