JSQMessagesViewController 7.3.4 + Firebase (3.7.1) observeMessages 无法访问 FIRDataSnapshot

JSQMessagesViewController 7.3.4 + Firebase (3.7.1) observeMessages cannot access FIRDataSnapshot

我只是想观察最新版本和 Swift 3.0 的 JSQMessages,以下代码是关于此问题的任何其他问题中报告的内容,但出于某种原因,FIRDataSnapshot 中包含的字典返回编译错误“类型 'Any' 没有下标成员。

有没有人遇到同样的问题并解决了?谢谢!

我找到了解决方案,不确定这是不是最好的方法,基本上我强制转换为 NSDictionary:

private func observeMessages() {
        let messagesQuery = messageRef.queryLimited(toLast: 25)

        messagesQuery.observe(.childAdded) { (snapshot: FIRDataSnapshot!) in

            let id = (snapshot.value as! NSDictionary)["name"] as! String
            let text = (snapshot.value as! NSDictionary)["text"] as! String
            //let photoUrl = (snapshot.value as! NSDictionary)["photoUrl"] as! String

            self.addMessage(id: id, text: text)
            self.finishReceivingMessage()
        }
    }

我更喜欢尽可能长时间地使用 Firebase 数据类型。在这种情况下,您将获得以下值:

snapshot.childSnapshot(forPath: "text").value as! String

所以:

private func observeMessages() {
    let messagesQuery = messageRef.queryLimited(toLast: 25)

    messagesQuery.observe(.childAdded) { (snapshot: FIRDataSnapshot!) in
        let id = snapshot.childSnapshot(forPath: "name").value as! String
        let text = snapshot.childSnapshot(forPath: "text").value as! String
        self.addMessage(id: id, text: text)
        self.finishReceivingMessage()
    }
}