如何确保我的函数在jsqmessagesviewcontroller中返回发件人的名字?

时间:2019-05-01 14:53:24

标签: swift firebase jsqmessagesviewcontroller

我试图使消息的发件人名称动态化,我的viewdidload()中有此代码

if  let data  = snapshot.value as? [String: String],
            let userId      = data["MessageUser"],
/*problem*/ let fname       = self?.getName(id: userId),
            let text        = data["MessageText"],

            !text.isEmpty
        {


            if let message = JSQMessage(senderId: userId,      displayName: fname, text: text)
            {
                self?.messages.append(message)

                self?.finishReceivingMessage()
            }
        }

这是我获取ID的名称的功能:

func getName(id:String) -> String {
   var fname = ""
        Database.database().reference().child("users").child(id).observe(.value, with: {(snapshot) in
        let value = snapshot.value as? NSDictionary
        fname = value?["Fname"] as! String 
    })

    return fname
}

为什么它返回nil?我的预期输出是调用该函数时发送的ID的名字。

0 个答案:

没有答案