gpt4 book ai didi

ios - 如何在 Swift 中观察多个节点中的 Firebase 子值变化?

转载 作者:可可西里 更新时间:2023-11-01 00:20:59 25 4
gpt4 key购买 nike

我的 Firebase 数据库中有一个“用户”节点。其中的每个用户都有一个带有 uid 的根。每个用户的属性之一是“坐标”。我想观察所有用户的任何这些坐标的任何变化。我几乎需要这样的东西:

usersDatabaseReference.child("*").child("coordinates").observe(.value, with: { (snapshot) in 

我的结构是这样的:

  • 用户

    • abcdefghijklmnop

      • 坐标:“12.345,12.345”

      • 其他 Prop

    • qrstuvwxyz

      • 坐标:“34.567,34.567”

      • 其他 Prop

所以我正在为坐标值发生变化的任何用户寻找全局通知。

我是否需要遍历 userDatabaseReference 中的所有子项并为每个子项设置观察者?然后每次添加或删除用户时,都要重新设置吗?

您可以看出我为什么要使用通配符。我应该如何处理这个问题?

最佳答案

可以只观察users的整体结构,然后通过快照判断坐标是否是发生变化的元素

usersDatabaseReference.child("users").observe(.childChanged, with: { (snapshot) in
//Determine if coordinate has changed
})

你还可以做的是:

func observeChildAdded(){
usersDatabaseReference.child("users").observe(.childAdded, with: { (snapshot) in
//Get the id of the new user added
let id = "123"
self.usersDatabaseReference.child("users").child(id).observe(.childChanged, with: { (snapshot) in
self.foundSnapshot(snapshot)
})
})
}

func foundSnapshot(_ snapshot: DataSnapshot){
let idChanged = snapshot.key
//Process new coordinates
}

因此,无论何时您添加一个新 child ,它都会自动为其设置一个观察者,但它们都会被推送到同一个函数 foundSnapshot

关于ios - 如何在 Swift 中观察多个节点中的 Firebase 子值变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45168993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com