Also hatte ich Probleme, die vorher mit 'beobachten' von Firebase arbeiteten, und ich erkannte, dass ich die Variablenwerte aus dem Code-Block, der asynchron arbeitete, nicht bringen konnte. Ein Benutzer hat mir gesagt, Abschluss-Handler zu verwenden, um dieses Problem zu beheben, und sein Beispiel war:Wie schreibe ich einen Abschlusshandler für Firebase-Daten?
func mapRegion(completion: (MKCoordinateRegion)->()) {
databaseHandle = databaseRef.child("RunList").child(runName).observe(.value, with: { (snapshot) in
let runData = snapshot.value as? [String: AnyObject]
self.minLat = runData?["startLat"] as? Double
self.minLng = runData?["startLong"] as? Double
self.maxLat = runData?["endLat"] as? Double
self.maxLng = runData?["endLong"] as? Double
print("testing")
print(self.minLat!)
print(self.maxLng!)
let region = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: (self.minLat! + self.maxLat!)/2,
longitude: (self.minLng! + self.maxLng!)/2),
span: MKCoordinateSpan(latitudeDelta: (self.maxLat! - self.minLat!)*1.1,
longitudeDelta: (self.maxLng! - self.minLng!)*1.1))
completion(region)
})
}
und den Code zu verwenden:
mapRegion() { region in
mapView.region = region
// do other things with the region
}
Also habe ich versucht, dies für eine andere Methode zu erstellen, die ich brauche eine Reihe von Objekttyp RunDetail zurückzukehren:
func loadRuns(completion: ([RunDetail]) ->()) {
// we need name, distance, time and user
databaseHandle = databaseRef.child("RunList").observe(.value, with: { (snapshot) in
self.count = Int(snapshot.childrenCount)
print(self.count!)
// more stuff happening here to add data into an object called RunDetail from firebase
// add RunDetail objects into array called 'run'
})
completion(runs)
}
ich bin nicht sicher, ob ich das richtig da oben bin Einstellung ^.
Ich bekomme immer noch nicht den Kopf um den Abschluss-Handler zu arbeiten (ich verstehe wirklich nicht, wie man es einrichtet). Kann mir bitte jemand helfen und mich wissen lassen, ob ich das richtig aufstelle? Vielen Dank.
ich mein Versuch, ein bisschen fixiert auf, vergaß es im Bearbeitungs Grund hinzuzufügen. – Mr10k