【问题标题】:Swift and Firebase Real-Time-Database: How do I get the number of objects?Swift 和 Firebase 实时数据库:如何获取对象的数量?
【发布时间】:2019-10-19 13:11:59
【问题描述】:

我刚开始学习 Swift,我正在尝试在列表中显示我添加到我的 Real-Time-Firebase 中的水果。我无法从我的数据库中获取水果的数量。 这是我的 JSON 数据库:

  "fruits" : {
    "apple" : {
      "price" : 4,
      "rate" : 6
    },
    "banana" : {
      "price" : 2,
      "rate" : 5
    },
    "orange" : {
      "price" : 10,
      "rate" : 9
    }
  }

我知道如何读取和写入 Data,但不知道如何在 Swift 中获取 Fruits 的数量。请帮我。谢谢

【问题讨论】:

    标签: swift firebase firebase-realtime-database


    【解决方案1】:

    要确定快照中的子节点数量,请使用其DataSnapshot.childrenCount property。所以像:

    ref = Database.database().reference()
    ref.child("fruits").observe(.value) { snapshot in
      print(snapshot.childrenCount)
    }
    

    请注意,这会将fruits 下的所有数据从数据库加载到您的应用程序,并在您的应用程序内执行计数。没有操作员来执行服务器的计数,只得到那个结果。

    【讨论】:

    • 你成就了我的一天!
    • @baken 很好的答案(正如预期的那样,哈哈)但是,请考虑数据集的大小。正如弗兰克所说。通过 .value 观察该节点会读入该节点中的所有数据。虽然对于较小的数据集这很好,但如果您有 100,000 个用户加上他们所有的数据要计算,这可能会使设备不堪重负并且读取所有这些数据需要时间。一种解决方案是将计数器保留在单独的节点中,并在 /users 节点中添加或删除子节点(如用户)时,更新计数器 +1 或 -1。这使得处理巨大的数据集变得轻而易举(而且速度很快),因为您只需要读取一个节点。
    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多