からです。私はPins = PinColorAnotationという配列を持っています.Pins.append(pinas)を呼び出してPins.countをプリントすると、常に0が得られます。なぜですか?しかし、print insideループを呼び出すと40と表示されます。問題は、Firebaseからダウンロードした後に、後でソートしてピンを管理する必要があるということです。しかし、私は傾ける。その問題を解決するには?このようなは、私はこのようなコードを持ってFirebase
ref.child("skelbimai").observeSingleEvent(of: .value, with: {(snapshot) in
for child in (snapshot.children.allObjects as? [DataSnapshot])!{
let pinas = PinColorAnotation(color: UIColor.red)
pinas.coordinate = CLLocationCoordinate2D(latitude: child.childSnapshot(forPath: "lat").value as! Double, longitude: child.childSnapshot(forPath: "lon").value as! Double)
pinas.pinColor = Kategorija(child.childSnapshot(forPath: "cat").value as! Int).Color
pinas.title = String(Kategorija(child.childSnapshot(forPath: "cat").value as! Int).Name)
pinas.subtitle = String(child.childSnapshot(forPath: "price").value as! Double)
self.Map.addAnnotation(pinas)
}
})
第1に、Firebaseデータは非同期であるため、データがいつ取り出されたかを知りたい場合は、完了ハンドラが必要です。第二に、いつマップ配列をインスタンス化していますか? – Paulo