firebase 实时数据库快照中的 Swift 代码执行顺序

问题描述 投票:0回答:0

我正在尝试从实时数据库中检索薪水数据,并通过将“薪水”与测试编号 9500 进行比较来计算“小数”。使用 for...in 循环,我希望得到带有 2 的“小数”(如总共 3 个数字中有 2 个数字小于 9500),虽然我在 for...in 循环中得到了正确的“smallnumber”聚合,但我得到的结果是最终打印的 smallnumber 行为 0。此外,底部打印块似乎比 for...in 循环执行得更早。谁能帮帮我?

这是快速代码:

ref.child("Salary").observe(.value, with:{ snapshot in
        let value = snapshot.value as? NSDictionary
        let Ids = value?.allKeys as! [String]
            
         var smallnumber: Int = 0
         for Id in Ids {
                    
            ref.child("Salary").child(Id).observe(.value, with: { snapshot in
                        
                  let salary = snapshot.value as! Int
                            
                  if salary < 9500 {
                       smallnumber = smallnumber + 1
                       print("Salary is small")
                       print(smallnumber)
                        }
                    })
                    
                }
            
            print("Idscount is \(Ids.count)")
            print("smallnumber is \(smallnumber)")
    })

我得到的输出: output screenshot

Idscount is 3
smallnumber is 0
Salary is small
1
Salary is small
2
swift firebase firebase-realtime-database snapshot
© www.soinside.com 2019 - 2024. All rights reserved.