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 实时数据库中实现用户名(swift 4)
如何通过在 swift 中实现观察者从 Firebase 实时数据库中获取嵌套数据