我已经在我的项目中使用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
我该怎么做才能使其再次工作,但要同时保留两个数据库?
答案 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)
}
}