Swift 4和Firebase如何计算子值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift 4和Firebase如何计算子值相关的知识,希望对你有一定的参考价值。

我试图通过返回其值等于1的所有用户来获取每个人如何挖掘的数量。这是正确的方法。下面是我用来设置它们的功能。有人可以帮我回复每个人的计数

func didTapGoing(for cell: HomePostCell) {
    guard let indexPath = collectionView?.indexPath(for: cell) else { return }
    var post = self.posts[indexPath.item]

    guard let postId = post.id else { return }

    guard let uid = FIRAuth.auth()?.currentUser?.uid else { return }

    let values = [uid: post.isGoing == true ? 0 : 1]
    FIRDatabase.database().reference().child("going").child(postId).updateChildValues(values) { (err, _) in

        if let err = err {
            print("Failed to pick going", err)
            return
        }

        post.isGoing = !post.isGoing
        self.posts[indexPath.item] = post
        self.collectionView?.reloadItems(at: [indexPath])
    }
}

Database

答案

您共享的代码不会读取任何数据,只会使用updateChildValues对其进行更新。

要计算子节点的数量,您需要读取这些节点,然后调用DataSnapshot.childrenCount

FIRDatabase.database().reference().child("going").child(postId).observe(DataEventType.value, with: { (snapshot) in
  print(snapshot.childrenCount)
})

如果您只想计算值为1的子节点,您可以:

FIRDatabase.database().reference().child("going").child(postId)
  .queryOrderedByValue().queryEqual(toValue: 1)
  .observe(DataEventType.value, with: { (snapshot) in
    print(snapshot.childrenCount)
  })

有关详细信息,请阅读sorting and filtering data上的Firebase文档。

以上是关于Swift 4和Firebase如何计算子值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 4.0 中获取 firebase-realtime-database 中的特定值

如何根据时间戳值计算子列表的平均值?

通过 UIElement.TranslatePoint 计算子元素中心偏离正确值

如何在swift ios中通过键值读取子数据或过滤firebase数据

计算子数组和最大(动态规划)

在 swift 4.0 中从 firebase 快照字典中获取值时打开一个可选的 nil