Swift / ¿Cómo usar dispatch_group con múltiples servicios web llamados?

estoy usandodispatch_group llamar a las funciones solicitantes de Firebase y recibir una notificación una vez que se complete la solicitud para poder trabajar con el resultado en ese momento. En este escenario, acabo de poner una declaración impresa.

func loadStuff() {
    dispatch_group_enter(group)
        myFirebaseFunction() {
             dispatch_group_leave(group)
        }

    dispatch_group_notify(group, dispatch_get_main_queue()) {
        print("done")
    }
}

func myFirebaseFunction(completionHandler: () -> ()) {

    let usersRef = firebase.child("likes")
    usersRef.observeEventType(.Value, withBlock: { snapshot in

             if snapshot.exists() {
                   let sorted = (snapshot.value!.allValues as NSArray).sortedArrayUsingDescriptors([NSSortDescriptor(key: "date",ascending: false)])

                   for item in sorted {

                       dict.append(item as! NSDictionary)
                   }
            }
            completionHandler()
   })   
}

Este código está funcionando bien.El problema es que, durante el tiempo de ejecución, los datos se agregarán a la base de datos de Firebase. Por eso tengo que usarobserveEventType en lugar deobserveSingleEventOfType.

Esto significa que hay un observador durante el tiempo de ejecución y, en caso de que se hayan agregado datos a la base de datos, el bloque dentro demyFirebaseFunction Será llamado de nuevo.

Una vez que esto sucede, la aplicación se bloquea porquedispatch_group_leave(group) ha sido llamado sindispatch_group_enter(group). Mientras tenga esto bien.

dispatch_group_enter(group)
    myFirebaseFunction() {
         dispatch_group_leave(group)      // crash here
    }

Si lo cambio aobserveSingleEventOfType, no se produce un bloqueo, pero no se observarán los nuevos Datos agregados a Firebase.

¿Cuál es la mejor práctica para usar?dispatch_group con múltiples servicios web? ¿O qué debo hacer para solucionar mi problema? La ayuda es muy apreciada.

PD Actualmente estoy usando Swift 2.3, pero se planea una actualización a Swift 3, por lo que sería muy sorprendente recibir una respuesta capaz de ambos.