【发布时间】:2019-02-25 09:15:16
【问题描述】:
我一直在尝试创建一个社交应用,让人们可以对他人进行评分。我已经能够检索和显示每条评论的评分,但是我很难获得所有评分来计算平均值。
这是我的代码:
func observeStars() {
guard let toId = users?.id else {
return }
let placesRef = Database.database().reference().child("Review")
placesRef.observeSingleEvent(of: .value, with: { snapshot in
for child in snapshot.children {
let placeSnap = child as! DataSnapshot
let ratingsSnap = placeSnap.childSnapshot(forPath: "STAR")
print(ratingsSnap)
let count = ratingsSnap.childrenCount
var total: Double = 0.0
for child in ratingsSnap.children {
print(child)
let snap = child as! DataSnapshot
let val = snap.value as! Double
total += val
}
let average = total/Double(count)
print(average)
}
})
}
我的 firebase 数据库结构如下所示:
{
"Review" : {
"75YFHCGX8WQyP3qlyvQKNohgCvQ2" : {
"-LM9OW1eLcS9yr3JZxP5" : {
"FROM" : "AV4RFwIlSNdnryfPPCl6SfLOzBZ2",
"STAR" : 3,
"TIMESTAMP" : 1.5366990112576609E9,
"TO" : "75YFHCGX8WQyP3qlyvQKNohgCvQ2"
},
"-LM9OoyD8A8HWZ387Ln9" : {
"FROM" : "MAc9ouJnAacHddqDMRet3K9SkZq1",
"STAR" : 2,
"TIMESTAMP" : 1.5366990928939629E9,
"TO" : "75YFHCGX8WQyP3qlyvQKNohgCvQ2"
}
},
"MAc9ouJnAacHddqDMRet3K9SkZq1" : {
"-LM9Oa1zGbRjdCERwoDX" : {
"FROM" : "AV4RFwIlSNdnryfPPCl6SfLOzBZ2",
"STAR" : 4,
"TIMESTAMP" : 1.536699031758939E9,
"TO" : "MAc9ouJnAacHddqDMRet3K9SkZq1"
}
}
我想使用子节点“STAR”进行计算
请,任何帮助将不胜感激!
【问题讨论】:
-
请不要在问题中包含图片和链接。包括代码和结构作为文本。要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON 并复制粘贴您的结构的 sn-p。见images and links are evil
标签: swift firebase dictionary firebase-realtime-database