Ich möchte, dass eine for-in-Schleife eine Reihe von Netzwerkanforderungen an firebase sendet und die Daten dann an einen neuen View-Controller weiterleitet, sobald die Ausführung der Methode abgeschlossen ist. Hier ist mein Code:
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
Ich habe ein paar Bedenken. Wie warte ich zunächst, bis die for-Schleife abgeschlossen ist und alle Netzwerkanforderungen abgeschlossen sind? Ich kann die Funktion compareSingleEventOfType nicht ändern, sie ist Teil des Firebase-SDK. Werde ich auch eine Art Race-Bedingung erstellen, indem ich versuche, aus verschiedenen Iterationen der for-Schleife auf das Datumsarray zuzugreifen (hoffe, das macht Sinn)? Ich habe über GCD und NSOperation gelesen, bin aber etwas verloren, da dies die erste App ist, die ich erstellt habe.
Hinweis: Das Locations-Array ist ein Array, das die Schlüssel enthält, auf die ich in Firebase zugreifen muss. Außerdem ist es wichtig, dass die Netzwerkanforderungen asynchron ausgelöst werden. Ich möchte nur warten, bis ALLE asynchronen Anforderungen abgeschlossen sind, bevor ich das Datumsarray an den nächsten Ansichtscontroller übergebe.