遍历 Firebase 中一个孩子的所有键
Posted
技术标签:
【中文标题】遍历 Firebase 中一个孩子的所有键【英文标题】:Iterate through all keys of one child in Firebase 【发布时间】:2017-04-09 18:51:11 【问题描述】:这是我在 Firebase 实时数据库中的结构:
我想获得所有产品的名称。
这是我尝试过的:
database.child("customerID").child("productTopSeller").observe(FIRDataEventType.value, with: (snapshot) in
for childSnap in snapshot.children.allObjects
let product = childSnap as! FIRDataSnapshot
print(product.value?["name"] as? String ?? "")
) (error) in
print(error.localizedDescription)
但这给了我以下错误:
Type 'Any' has no subscript members.
我知道我需要以某种方式投射快照,但不知道该怎么做。使用 Swift 3。
【问题讨论】:
你试过用谷歌搜索error吗? 【参考方案1】:您需要将product.value
转换为[String:Any]
。看广告下面的代码
ref.child("customerID").child("productTopSeller").observeSingleEvent(of: .value, with: snapshot in
let names = snapshot
.children
.flatMap $0 as? FIRDataSnapshot
.flatMap $0.value as? [String:Any]
.flatMap $0["name"] as? String
print(names)
)
请注意,我使用
observeSingleEvent
是为了只从 Firebase 获得一个回调。 您的代码确实使用了observe
,而不是每次观察到的数据确实发生变化时都会产生一个回调。
【讨论】:
以上是关于遍历 Firebase 中一个孩子的所有键的主要内容,如果未能解决你的问题,请参考以下文章