Recuperar el valor de cadena de la función con cierre en Swift

Estoy tratando de recuperar un valor de cadena de Firebase para obtener cada nombre de usuario con un UID único que se pasa a la función, que devuelve el nombre de usuario del usuario. Sin embargo, desde la base de fuegoObserveEvent es enclosures, No puedo devolver ningún valor porque las acciones sucedenasincrónico(?) Me preguntaba si era una forma de lograr esto.

La función se ve así:

func GetUsername(uid:String) -> String {
    var username = String()
    firebase.child("Users").child(uid).observeSingleEventOfType(.Value) { (snapshot:FIRDataSnapshot) in

        username = snapshot.value!["Username"] as! String

    }

    return username
}

Obviamente esto no funciona, pero quiero poder obtener los datos haciendo un GetUsername ("whatevertheidmightbe"). Ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta