将Firestore添加到我的项目中会导致我的实时数据库查询错误

时间:2019-05-09 00:58:23

标签: swift firebase google-cloud-firestore

我已经在我的项目中使用Firebase实时数据库已有相当长的一段时间了。最近,我为Firestore添加了pod,以便与其他数据库以及所有查询一起使用,并且仅对Real-time Database的查询遇到以下错误:“'subscript'的用法不正确”。

如果我卸载Pod,一切都会恢复正常,并且完全没有错误。 这就是我以前使用代码的方式:(工作)

func retriveObjects() {
    ref.child("Dinner").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in
        let allPosts = snapshot.value as! [String : AnyObject]
        for (_, item) in allPosts {
            if let itemCount = item["itemCount"] as? String {
                print(itemCount)
            }
        }
    }
}

现在此行给我错误:

if let itemCount = item["itemCount"] as? String

我该怎么做才能使其再次工作,但要同时保留两个数据库?

1 个答案:

答案 0 :(得分:1)

如评论中所述,快照的值被强制转换为[String:AnyObject]的字典,然后您尝试将item用作Dictionary,但将其强制转换为AnyObject(非字典) 。换句话说,item [“ itemCount”]不适用于AnyObject。

目前尚不清楚是什么引发了该错误,但是我们有很多项目同时存在,并且没有引发该错误。您可能需要考虑稍微修改一下代码;

self.ref.child("Dinner").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in
    let allPosts = snapshot.children.allObjects as! [DataSnapshot]
    for post in allPosts {
        let itemCount = post.childSnapshot(forPath: "itemCount").value as? String ?? "No Count"
        print(itemCount)
    }
}