사용자 인 GeoFire를 사용하여 근처에있는 모든 음식 트럭을 가져 오는 기능을 가진 사용자 클래스가 있습니다. observeReadyWithBlock을 사용하여 GeoFire가 반환 한 트럭 ID를 가져와 Firebase를 사용하여 나머지 정보를 얻습니다. 그러나 트럭 개체의 배열에서 이름과 설명을 추가 한 후 트럭 중 하나에 액세스하려고하면 xCode에서 배열이 비어 있다고 말합니다.Geofire/Firebase로 사용자 목록 조립하기
다른 컨트롤러 클래스의 인근 트럭 배열을 사용하여 인근 트럭을 모두 표시하는 테이블과 기본 정보를 사용자에게 표시 할 계획입니다.
트럭의 배열을 제대로 채우려면 어떻게해야하며 아래 코드를 기반으로 잘못 될 수있는 항목은 무엇입니까? 매우 감사합니다!
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
}
대단히 감사합니다! 정말로 도움이되는, 고맙습니다! –