【问题标题】:Retrieve User Data to make leaderboards in Firebase iOS检索用户数据以在 Firebase iOS 中制作排行榜
【发布时间】:2018-05-15 07:23:21
【问题描述】:

我正在尝试使用 Google Firebase 数据库创建排行榜,并且我已成功将我的用户及其分数添加到数据库中,如下图所示。我正在尝试将 Person 1 到 Person 8 的数据检索到我的代码中的一个数组中,然后我可以从那里对它们进行排序并将它们添加到我的排行榜中。我不确定如何在不知道孩子姓名的情况下系统地检索用户及其分数,因为用户将输入自己的姓名。任何帮助将非常感激。

【问题讨论】:

    标签: ios firebase firebase-realtime-database


    【解决方案1】:

    这应该按分数升序检索/打印用户。

      usersRef.queryOrderedByValue().observe(.value, with: { (snapshot) in
          for child in snapshot.children {
              print((child as! DataSnapshot).key)
          }
      })
    

    对我来说这是打印出来的:

    第 4 人

    第 1 个人

    第二个人

    第三个人

    第 5 个人

    第 7 个人

    第 6 个人

    第 8 人

    对于排行榜,您可能希望限制检索到的用户数量:

    _usersRef.queryOrderedByValue().queryLimited(toLast: 10).observe(.value) { snapshot in
      ...
    

    这将只返回前 10 个分数,仍然按升序打印它们。要使它们按降序排列,您必须在客户端中反转它们。

    【讨论】:

    • 非常感谢您的回复。我不得不稍微调整代码以解决出现的一些错误,但我无法修复的错误是“密钥使用不明确”。你知道我会怎么解决吗?这是我输入的内容。如果评论中的格式不是很好,请见谅。 override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) rootRef.child("users").queryOrderedByKey().observe(.value, with: { snapshot in for child in snapshot.children { print((child as AnyObject).key) } }) }
    • 它可能必须是child?.key。我从不完全确定那里的 Swift 语法。
    • 这并没有解决任何问题。我会做一些研究,看看我能不能找到一些东西。还是谢谢你
    • 我修复了代码以调用正确的排序方法。我还用适当的低调更新了它。
    • “as!DataSnapshot”修复了所有问题,并且可以正常工作。我应该可以从这里拿走它,但如果我有任何问题,我一定会回来的。非常感谢,你帮了大忙!
    猜你喜欢
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2014-11-28
    相关资源
    最近更新 更多