gpt4 book ai didi

ios - 我怎样才能在 Firebase 中获得现有和新 child 的结果?

转载 作者:行者123 更新时间:2023-11-29 01:03:44 25 4
gpt4 key购买 nike

我正在尝试在 Firebase 中为我的 swift iOS 应用程序创建查询。我在查询中遇到的问题是它不会立即从 firebase 获取坐标,除非它们被更改。我尝试了所有其他观察者类型,但似乎都不起作用。我知道我目前需要更改观察者类型,但我需要正确的方法来使其在应用程序加载后立即获取位置并使用 firebase 进行更新。 .childAdded 立即获取位置,但在 Firebase 上更改时它不会更新。

userDirectory.queryOrderedByChild("receiveJobRequest")
.queryEqualToValue(1)
.observeEventType(.ChildChanged , withBlock: {snapshot in
var cIhelperslatitude = snapshot.value["currentLatitude"]
var cIhelperslongitude = snapshot.value["currentLongitude"]

最佳答案

如果你想监听多种事件类型,你需要注册多个监听器。

let query = userDirectory.queryOrderedByChild("receiveJobRequest")
.queryEqualToValue(1)

query.observeEventType(.ChildAdded, withBlock: {snapshot in
var cIhelperslatitude = snapshot.value["currentLatitude"]
var cIhelperslongitude = snapshot.value["currentLongitude"]

query.observeEventType(.ChildChanged, withBlock: {snapshot in
var cIhelperslatitude = snapshot.value["currentLatitude"]
var cIhelperslongitude = snapshot.value["currentLongitude"]

您可能希望将该通用代码重构为一个方法,您可以从 .ChildAdded.ChildChanged block 中调用该方法。

或者,您可以注册一个 .Value 事件,该事件会在每次查询下的值发生更改时为初始值 触发。但是由于 .Value 是用所有匹配的 child 调用的,所以你必须在你的 block 中循环遍历 child :

query.observeEventType(.Value, withBlock: {allsnapshot in
for snapshot in allsnapshot.children {
var cIhelperslatitude = snapshot.value["currentLatitude"]
var cIhelperslongitude = snapshot.value["currentLongitude"]
}

关于ios - 我怎样才能在 Firebase 中获得现有和新 child 的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36683602/

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