繁体   English   中英

快速从另一个函数访问闭包内部的变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM