Busque dados do Firebase juntando tabelas no iOS

Estou tentando buscar dados de duas tabelas diferentes do Firebase. Aqui está a estrutura da tabela:

Post {
    1{
       pImages{
           i1:true
           i2:true
       }
    }
    2{
       pImages{
           i3:true

       }
    }
}
Images{
       i1{
          iUrl : ....
          pId : 1
         }
       i2{
          iUrl :...
          pId : 1
         }
       i3{
         iUrl:....
          pId : 2
         }
 }

Preciso recuperar imagens correspondentes a postar com id = 1. A seguir está minha implementação para recuperar imagens:

 func retrieveImagesForPost(postId: String,completion: (result: AnyObject?, error: NSError?)->()){
        var imgArray:[Image]=[]
        let postsRef = self.ref.child("post")
        let imagesRef = self.ref.child("image")
        let postImagesRef = postsRef.child(postId).child("pImages");
        postImagesRef.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in
            for item in snapshot.children{
                imagesRef.child(item.key).observeSingleEventOfType(.Value, withBlock: { (snap) in
                    let image = Image(snapshot: snap)
                    print(image)
                    imgArray.append(image)
                })
            }
            print(snapshot.key)
            print("called")
            completion(result:imgArray, error:nil)
        })
    }

Mas, o problema é que não consigo obter todas as imagensimgArray para poder enviar paracompletion handler. Abaixo está a saída da chamadaretrieveImagesForPost com código de postagem == 1.

pImages
called
<TestProject.Image: 0x7f9551e82000>
<TestProject.Image: 0x7f955466a150>

As imagens são recuperadas após ocompletion handler é chamado. Eu tentei odispatch groups e asemaphores abordagem descrita na seguintepostar. Mas os resultados ainda são os mesmos. Como posso fazercompletion handler esperar que todas as imagens sejam buscadas no Firebase?

questionAnswers(2)

yourAnswerToTheQuestion