Error de declaración de devolución al usar Firebase en Swift

Hice una función que se conecta a firebase, va a una ruta específica y luego me da el valor. Cuando imprimo (snapshot.value), me da el valor que necesito. Cuando llamo a la función, userProfile está vacío. Necesito userProfile para devolver la cadena de instantánea.

 func getUserData(uid: String) -> String{
   var _REF_USERNAME = FIRDatabase.database().reference().child("users").child(uid).child("profile").child("username")

     var userProfile = String()


    _REF_USERNAME.observe(.value, with: {(snapshot) in
        print("SNAP: \(snapshot.value)")
            userProfile = snapshot.value as! String

    })
    print(userProfile)
    return userProfile
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta