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

时间:2018-09-28 02:38:03

标签: swift function firebase firebase-realtime-database closures

我正在尝试创建一个列出某些服务的应用,以便用户可以对每个服务进行评分。来自每台服务器的评级将保存在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()函数之外,并在其他地方使用它?任何输入将不胜感激!

1 个答案:

答案 0 :(得分:0)

https://