gpt4 book ai didi

swift - 使用 swift 从另一个函数访问闭包内的变量

转载 作者:行者123 更新时间:2023-11-30 11:07:28 25 4
gpt4 key购买 nike

我正在尝试创建一个列出某些服务的应用程序,用户可以在其中对每项服务进行评分。每个服务器的评级保存在 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)

}

如您所见,平均值是在函数内的 2 个连续闭包内打印的。但是,我在单独的 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)

}

关于swift - 使用 swift 从另一个函数访问闭包内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52547529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com