Ios 如何在一个块中获取Firebase查询的所有结果

Ios 如何在一个块中获取Firebase查询的所有结果,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我很难处理Firebase查询结果。使用以下代码: ref.queryOrderedByChild("gender") .queryEqualToValue("female") .observeEventType(.ChildAdded, withBlock: { snapshot in print("result: \(snapshot) ") }) “结果”打印3次。我希望所有结果都是一个数组(类似于对Parse的查询),

我很难处理Firebase查询结果。使用以下代码:

     ref.queryOrderedByChild("gender")
        .queryEqualToValue("female")
        .observeEventType(.ChildAdded, withBlock: { snapshot in
        print("result: \(snapshot) ")
     })
“结果”打印3次。我希望所有结果都是一个数组(类似于对Parse的查询),而这将被分别打印3次

这里的最终目标是将所有结果附加到一个数组中。但是,我不知道如何做到这一点,因为我看不到任何方法可以知道有多少元素将从服务器返回


我想这里一定有我遗漏的简单的东西

看来这是我错过的一件简单的事情。将事件类型从.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返回节点内的所有内容;如果这是一百万个孩子,你会一次得到所有的。另一方面,childAdded会返回每个孩子,一次返回一个,并附加一个观察者,以便您的应用程序将收到添加的任何新孩子的通知。