gpt4 book ai didi

ios - 如何加入多个 observeSingleEvent() 调用结果并在所有调用完成后执行操作?

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:51 25 4
gpt4 key购买 nike

在 iOS 应用程序中,我们在循环内多次调用 observeSingleEvent() 以填充列表:

for i in 1...10 {
ref.child("\(i)").observeSingleEvent(of: .value, with: { (snapshot) in
// Add another value to the list
let value = snapshot.value as? NSDictionary
list.append(value)

// All values are in the list
if list.count == 10 {
reloadView()
}
})
}

我们希望这 10 个调用或多或少同时处理,并且当所有调用都完成时打算执行一个操作(比如在 View 中显示列表)。

我们计算列表中的元素以确定所有调用何时完成,但我们正在寻找一种更有效/更优雅的方法来完成同样的事情。 Swift 中是否有更好的方法或 Firebase 推荐的更好方法?

最佳答案

如果你需要专门一个接一个地调用,你可以尝试递归函数。

func observeSingleEventOfValue(with children: [String]) {

var children = children.count > 0 ? children : nil

guard let path = children?.removeFirst() else { return }

ref.child(path).observeSingleEvent(of: .value, with: { (snapshot) in

let value = snapshot.value as? NSDictionary

self.list.append(value)

if children!.count > 0 {
self.observeSingleEventOfValue(with: children!)
} else {
self.reloadView()
}
})
}

然后您将使用一组子路径调用该方法。

observeSingleEventOfValue(with: Array(1...10).map { "\($0)" })

以递归方式执行此操作将确保按顺序观察子项 - 一个接一个。

关于ios - 如何加入多个 observeSingleEvent() 调用结果并在所有调用完成后执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994171/

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