Vorrei un ciclo for in per inviare un gruppo di richieste di rete a Firebase, quindi passare i dati a un nuovo controller di visualizzazione una volta che il metodo termina l'esecuzione. Ecco il mio codice:
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
Ho un paio di preoccupazioni. Innanzitutto, come posso attendere fino al termine del ciclo for e al completamento di tutte le richieste di rete? Non riesco a modificare la funzione observSingleEventOfType, fa parte dell'SDK Firebase. Inoltre, creerò una sorta di condizione di gara cercando di accedere alle dateArray da diverse iterazioni del ciclo for (speranza che abbia senso)? Ho letto di GCD e NSOperation, ma mi sono perso un po 'perché questa è la prima app che ho creato.
Nota: l'array Locations è un array che contiene le chiavi di cui ho bisogno per accedere a Firebase. Inoltre, è importante che le richieste di rete vengano attivate in modo asincrono. Voglio solo attendere il completamento di TUTTE le richieste asincrone prima di passare le dateArray al controller della vista successiva.