首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JSQMessagesViewController 7.3.4 + Firebase (3.7.1) observeMessages无法访问FIRDataSnapshot

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

Stack Overflow用户
提问于 2016-10-07 15:53:23
回答 2查看 87关注 0票数 0

我只是尝试用最新版本和SWIFT3.0来观察JSQMessages,下面的代码是在任何其他问题中报告的,但是由于某种原因,FIRDataSnapshot中包含的字典返回编译错误"Type“没有下标成员。

有谁遇到过同样的问题并克服了吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 16:27:14

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

代码语言:javascript
运行
复制
snapshot.childSnapshot(forPath: "text").value as! String

所以:

代码语言:javascript
运行
复制
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()
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-10-07 16:04:11

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

代码语言:javascript
运行
复制
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()
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39921323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档