Ich habe eine Klasse namens User, die eine Funktion hat, die alle in der Nähe befindlichen Food Trucks mit GeoFire bekommt. Ich habe einen "observeReadyWithBlock" verwendet, um die von GeoFire zurückgegebenen LKW-IDs zu übernehmen und den Rest der Informationen über Firebase zu erhalten. Wenn ich jedoch nach dem Hinzufügen von Name und Beschreibung auf einen der Trucks aus meinem Array von Truck-Objekten zugreife, sieht es so aus, als ob xCode mir sagt, dass das Array leer ist.Zusammenstellen einer Liste von Benutzern mit Geofire/Firebase
Ich plane, dieses Array von Lastwagen in anderen Controller-Klassen zu verwenden, um Tabellen zu füllen, die alle in der Nähe befindlichen Lastwagen und einige grundlegende Informationen für den Benutzer zeigen.
Wie kann ich meine LKW-Reihe ordnungsgemäß befüllen, und was könnte ich aufgrund des unten stehenden Codes falsch machen? Vielen Dank!
func getNearbyTrucks(){
//Query GeoFire for nearby users
//Set up query parameters
let center = CLLocation(latitude: 37.331469, longitude: -122.029825)
let circleQuery = geoFire.queryAtLocation(center, withRadius: 100)
circleQuery.observeEventType(GFEventTypeKeyEntered, withBlock: { (key: String!, location: CLLocation!) in
let newTruck = Truck()
newTruck.id = key
newTruck.currentLocation = location
self.nearbyTrucks.append(newTruck)
}) //End truckQuery
//Execute code once GeoFire is done with its' query!
circleQuery.observeReadyWithBlock({
for truck in self.nearbyTrucks{
ref.childByAppendingPath("users/\(truck.id)").observeEventType(.Value, withBlock: { snapshot in
print(snapshot.value["name"] as! String)
truck.name = snapshot.value["name"] as! String
truck.description = snapshot.value["selfDescription"] as! String
let base64String = snapshot.value["profileImage"] as! String
let decodedData = NSData(base64EncodedString: base64String as String, options: NSDataBase64DecodingOptions.IgnoreUnknownCharacters)
truck.photo = UIImage(data: decodedData!)!
})
}
}) //End observeReadyWithBlock
print(nearbyTrucks[0].id)
//This line gives the error that the array index is out of range
}
Danke sehr frank! Wirklich sehr hilfreich, danke! –