[英]Swift Firebase ordering query
免责声明:我是编码和Firebase的新手。
我的JSON树如下所示:
“MAIN LEAGUE“ : {
“Team Alpha“ : {
"Team Score" : “50”,
"Total Time " : "02:22:05",
"Team Name" : “Team Alpha“,
},
“Team Bravo“ : {
"Team Score" : “200”,
"Total Time" : "02:09:58",
"Team Name" : “Team Bravo“
},
“Team Charlie“ : {
“Team Score“ : “150”,
"Total Time" : "02:16:50",
"Team Name" : “Team Charlie“
}
}
我正在尝试查询数据库并提出一个新的表格视图,据此团队按最高的“团队得分”排名。
因此,尝试按此顺序显示:
" Team Bravo" : "200"
" Team Charlie" : "150"
" Team Alpha" : "50"
我有点迷路了。 我已经尝试了,但无济于事(下面的表格视图中什么也没有返回):
struct content {
var sTitle : String!
var sValue : Any!
init(sTitle: String, sValue: Any) {
self.sTitle = sTitle
self.sValue = sValue
}
}
var dbHandleQuery: FIRDatabaseHandle?
var dbrefString = (myDatabasePath)// this is the database path to the correct child
("MAIN LEAGUE")
dbHandleQuery=FIRDatabase.database().reference().child(dbrefString).queryOrdered(byChild: "Team Score").observe( .value, with: {(snapshot) in
var newContent : [content] = []
for snap in snapshot.children.allObjects as! [FIRDataSnapshot] {
let title = snap.key as String
let message = snap.value as? String
print(snap.key)
print(snap.value as Any)
newContent.append(content(sTitle: title, sValue: message as Any))
self.myTableView.reloadData()
}
self.cellContent = newContent
self.myTableView.reloadData()
})
我如何才能获得该排名? 还是最好尝试将所有内容加载到本地数组中,然后再从那里对它们进行排名? 任何帮助,不胜感激!
更新:上面的方法确实正确地对它们进行了排名,但是我的表只检索了“团队名称”,并且我无法提取“总分”以放入表视图单元格“第二个标签”(它有2个标签,“ 1个团队名称”,“ 1个总计”得分)。
所以现在看起来像这样:
" Team Bravo"
" Team Charlie"
" Team Alpha"
如何在每个分数旁边附加每个总分数? 非常感谢
好的,不确定这是否是最好的答案,但是我设法使其成功并获得了想要的结果。
发布它以帮助可能遇到相同问题的任何人:
dbHandleQuery = FIRDatabase.database().reference().child(dbrefString).queryOrdered(byChild: "Team Score").observe( .value, with: {(snapshot) in
var counter = 0
var newContent : [content] = []
for snap in snapshot.children.allObjects as! [FIRDataSnapshot] {
counter += 1
let title = snap.key as String
if let rankedBy = snap.value as? [String : Any] {
newContent.append(content(sTitle: "\(counter).\(title)", sValue: rankedBy["Team Score"] as Any))
self.myTableView.reloadData()
}
}
self.cellContent = newContent
self.myTableView.reloadData()
})
这给我
"1.Team Bravo" - "200"
"2.Team Charlie" - "150"
"3.Team Alpha" - "50"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.