[英]accessing a variable inside a closure from another function with swift
我正在尝试创建一个列出某些服务的应用,用户可以在其中对每个服务进行评分。 来自每台服务器的评级将保存在firebase数据库中。 我可以使用以下功能检索所有评分并计算平均值:
func observeStars() {
let placesRef = Database.database().reference().child("Review")
placesRef.observe(.childAdded, with: { (snapshot) in
let toId = snapshot.key
var total: Double = 0.0
var average: Double = 0.0
placesRef.child(toId).observeSingleEvent(of: .value, with: { (snapshot) in
let count = snapshot.childrenCount
for childOfPlace in snapshot.children {
let childOfPlaceSnap = childOfPlace as! DataSnapshot
let dict = childOfPlaceSnap.value as! [String: Any]
let val = dict["STAR"] as! Double
total += val
}
average = total/Double(count)
print(average)
})
}, withCancel: nil)
}
如您所见,平均值在函数内部的两个连续闭包中打印。 但是,我在单独的swift文件的另一个函数中使用这些平均值时遇到麻烦,因此我可以使用它在代表每种服务的每个tableViewcell中显示平均评分。 我的大问题是如何将计算出的平均值带到observeStars()函数之外,并在其他地方使用它? 任何输入将不胜感激!
var average: Double = 0.0
func observeStars() {
let placesRef = Database.database().reference().child("Review")
placesRef.observe(.childAdded, with: { (snapshot) in
let toId = snapshot.key
var total: Double = 0.0
placesRef.child(toId).observeSingleEvent(of: .value, with: { (snapshot) in
let count = snapshot.childrenCount
for childOfPlace in snapshot.children {
let childOfPlaceSnap = childOfPlace as! DataSnapshot
let dict = childOfPlaceSnap.value as! [String: Any]
let val = dict["STAR"] as! Double
total += val
}
self.average = total/Double(count)
print(average)
})
}, withCancel: nil)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.