【问题标题】:Swift Firebase ordering querySwift Firebase 订购查询
【发布时间】:2017-05-06 08:42:45
【问题描述】:

免责声明:我对编码和 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()
        })

我怎样才能达到这个排名?或者尝试将所有内容加载到本地数组中然后尝试从那里对它们进行排名会更好吗?任何帮助,不胜感激!

更新:所以上面确实对它们进行了正确排名,但我的表只检索团队名称,我无法提取“总分”放入我的 tableview 单元格第二个标签(它有 2 个标签,1 个用于团队名称,总分 1 分)。

所以现在看起来像这样:

" Team Bravo"
" Team Charlie"
" Team Alpha"

如何将每个对应的总分附加到每个分数旁边?非常感谢

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    好的,不确定这是最好的答案,但我设法让它工作并得到我想要的结果。

    发布它以帮助可能遇到相同问题的任何人:

        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"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多