【问题标题】:Firebase queryEqualToValue get Key in Swift 2.3Firebase queryEqualToValue 在 Swift 2.3 中获取密钥
【发布时间】:2016-10-29 05:01:44
【问题描述】:

我正在使用 Swift 和 Firebase 在 iOS 中开发一个小型应用程序。我在查询数据和检索值时遇到问题。 我的 firebase 实时数据库是这样的:

"qrcode" : {
   "postsedation_room" : "http://bing.com",
   "preprocedure_room" : "http://google.com",
   "presedation_room" : "http://en.m.wikipedia.org"
}

我想做这个查询:

let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.Value, withBlock: { snapshot in
   print(snapshot)
})

打印一个键值“postsedation_room”。 此时打印的结果是 Snap (qrcode) <null>你能帮我打印出给定子值的键吗?

【问题讨论】:

  • @EICaptainv2.0 我将如何更改我的代码来解决这个空问题?

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

当您对 Firebase 数据库执行查询时,可能会有多个结果。因此,如果您附加一个值观察者,则快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

因此,在您的观察者中,您需要处理该列表。最简单的方法是迭代它:

let query = rootRef.child("qrcode").queryOrderedByValue().queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.Value, withBlock: { snapshot in
   for child in snapshot.children {
      print(child.key)
   }
})

您也可以观察单个childAdded eventL

let query = rootRef.child("qrcode").queryEqualToValue("http://bing.com")

query.observeSingleEventOfType(.ChildAdded, withBlock: { snapshot in
   print(snapshot.key)
})

【讨论】:

  • 我尝试了两种方法,在这两种情况下它都返回null...您还有其他建议吗?
猜你喜欢
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多