Me gustaría un for in loop para enviar un montón de solicitudes de red a firebase, luego pasar los datos a un nuevo controlador de vista una vez que el método termine de ejecutarse. Aquí está mi código:
var datesArray = [String: AnyObject]()
for key in locationsArray {
let ref = Firebase(url: "http://myfirebase.com/" + "\(key.0)")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
datesArray["\(key.0)"] = snapshot.value
})
}
// Segue to new view controller here and pass datesArray once it is complete
Tengo un par de preocupaciones Primero, ¿cómo espero hasta que finalice el ciclo for y se completen todas las solicitudes de red? No puedo modificar la función observeSingleEventOfType, es parte del SDK de Firebase. Además, ¿crearé algún tipo de condición de carrera al intentar acceder a la matriz de fechas desde diferentes iteraciones del ciclo for (espero que tenga sentido)? He estado leyendo sobre GCD y NSOperation pero estoy un poco perdido ya que esta es la primera aplicación que he creado.
Nota: La matriz de ubicaciones es una matriz que contiene las claves a las que necesito acceder en firebase. Además, es importante que las solicitudes de red se disparen de forma asincrónica. Solo quiero esperar hasta que se completen TODAS las solicitudes asincrónicas antes de pasar el arreglo de fechas al siguiente controlador de vista.