Swift 和 Firebase 实时数据库:如何获取对象的数量?

Posted

技术标签:

【中文标题】Swift 和 Firebase 实时数据库:如何获取对象的数量?【英文标题】:Swift and Firebase Real-Time-Database: How do I get the number of objects? 【发布时间】: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 的数量。请帮我。谢谢

【问题讨论】:

【参考方案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。这使得处理巨大的数据集变得轻而易举(而且速度很快),因为您只需要读取一个节点。

以上是关于Swift 和 Firebase 实时数据库:如何获取对象的数量?的主要内容,如果未能解决你的问题,请参考以下文章

从firebase实时数据库IOS Swift中检索数据

在 Firebase 实时数据库中实现用户名(swift 4)

如何通过在 swift 中实现观察者从 Firebase 实时数据库中获取嵌套数据

iOS Swift 中的 firebase 实时数据库推送等价物是啥?

Swift 中的 Firebase 实时数据库

如何更改 Firebase 实时数据库中子值的顺序