【发布时间】:2017-09-14 22:34:50
【问题描述】:
我正在为一个返回对象列表的函数创建一个完成处理程序。当它第一次返回值时,它运行良好。但是,当 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
}
【问题讨论】:
标签: ios swift firebase firebase-realtime-database