オブジェクトのリストを返す関数の補完ハンドラを作成しています。初めて値を返すときは正常に動作します。しかし、firebaseデータベースに何らかの変更が生じ、再び呼び出されるのを観察すると、配列のサイズは倍増します。なぜそれが倍増しているのですか?完了ハンドラSwiftのFirebaseオブザーバ
func getStadiums(complition: @escaping ([Stadium]) -> Void){
var stadiums: [Stadium] = []
let stadiumRef = Database.database().reference().child("Stadium")
stadiumRef.observe(.value, with: { (snapshot) in
for snap in snapshot.children {
guard let stadiumSnap = snap as? DataSnapshot else {
print("Something wrong with Firebase DataSnapshot")
complition(stadiums)
return
}
let stadium = Stadium(snap: stadiumSnap)
stadiums.append(stadium)
}
complition(stadiums)
})
}
そしてこの
getStadiums(){ stadiums
print(stadiums.count) // count gets doubled up after every observe call
}
ありがとうございます@Jen :)それは本当に働いた –