2

GeoFire を使用して近くのすべてのフード トラックを取得する関数を持つ User というクラスがあります。私は、observeReadyWithBlock を使用して、GeoFire から返されたトラック ID を取得し、残りの情報を Firebase を使用して取得しました。ただし、名前と説明を追加した後、Truck オブジェクトの配列からトラックの 1 つにアクセスしようとすると、xCode が配列が空であることを通知しているように見えます。

この近くのトラックの配列を他のコントローラー クラスで使用して、近くのすべてのトラックと基本的な情報をユーザーに表示するテーブルを作成することを計画しています。

トラックの配列を適切に設定するにはどうすればよいですか。また、以下のコードに基づいて何が間違っている可能性がありますか。どうもありがとう!

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
}
4

1 に答える 1