如何在一个块中获取 Firebase 查询的所有结果
Posted
技术标签:
【中文标题】如何在一个块中获取 Firebase 查询的所有结果【英文标题】:How to get all results from a Firebase Query in one block 【发布时间】:2016-03-15 01:47:38 【问题描述】:我很难处理 Firebase 查询结果。使用以下代码:
ref.queryOrderedByChild("gender")
.queryEqualToValue("female")
.observeEventType(.ChildAdded, withBlock: snapshot in
print("result: \(snapshot) ")
)
“结果”被打印 3 次。我希望所有结果的单个数组(类似于 Parse 上的查询)而不是单独打印 3 次。
这里的最终目标是将所有结果附加到一个数组中。但是,我不知道该怎么做,因为我无法知道有多少元素将从服务器返回。
我认为这里一定有一些我想念的简单的东西。
【问题讨论】:
【参考方案1】:看来我错过了一些简单的事情。将事件类型从 .ChildAdded 更改为 .Value 可解决此问题。希望这对其他人有帮助...
var resultArray:[AnyObject] = []
ref.queryOrderedByChild("gender")
.queryEqualToValue("female")
.observeEventType(.Value, withBlock: snapshot in
for item in snapshot.children
resultArray.append(item)
print("Results Array: \(resultArray)")
print("Results Array Count: \(resultArray.count)")
)
【讨论】:
.value 返回节点内的所有内容;如果那是 100 万个孩子,你会一次得到所有的孩子。另一方面,.childAdded 返回每个孩子,一次一个,还附加一个观察者,以便您的应用收到任何添加的新孩子的通知。以上是关于如何在一个块中获取 Firebase 查询的所有结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 上的 Firebase 中获取嵌套键中的值
如何在 Firebase 云 Firestore 中查询一个字段然后按另一个字段排序?
Swift/iOS - Firebase 远程配置获取值永远不会完成