【问题标题】:Iterate through all keys of one child in Firebase遍历 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吗?

标签: ios swift firebase firebase-realtime-database


【解决方案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,而不是每次观察到的数据确实发生变化时都会产生一个回调。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2019-10-19
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    相关资源
    最近更新 更多