免責事項:私はコーディングとFirebaseにはとても新しいです。Swift 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()
})
どのようにしてランキングを達成できますか?または、ローカル配列のすべてをロードしてそこからランク付けしてみることをお勧めしますか?どのような助け、大いに感謝!
UPDATE:上記は正しくランク付けされていますが、テーブルはTEAM NAMEのみを取得し、テーブルビューのセル2番目のラベル(2つのラベル、チーム名、合計スコア1)。
だから今、それは次のようになります。
" Team Bravo"
" Team Charlie"
" Team Alpha"
はどうやって一つ一つの隣にそれぞれ対応する合計スコアを付けることができますか?多くのありがとう
:それは同じ問題に遭遇するかもしれない人を助けるために投稿
このコード。 Firebaseのドキュメントには、コードと非常によく似た例があります:https://firebase.google.com/docs/database/security/indexing-data – DoesData