gpt4 book ai didi

swift - databaseReference.observe(DataEventType.value, :{(DataSnapshot) not working properly all the time

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

func checkPaid(utilityId : String) -> Int{

var amount:String = ""
var status = 0
print("inside new function ")
print ("\(utilityId) inside new function ")
self.databaseRefPayment.observe(DataEventType.value, with:{(DataSnapshot) in
if DataSnapshot.childrenCount > 0 {
for payments in DataSnapshot.children.allObjects as! [DataSnapshot]{
var paymentsObject = payments.value as? NSDictionary

/*
if(paymentsObject!["month"] as! String == monthCheck && paymentsObject!["year"] as! String == monthCheck && paymentsObject!["utilityid"] as! String == utilityId as! String){ */
if(paymentsObject!["utilityId"] as! String == utilityId){

amount = paymentsObject!["amount"] as! String
print(amount)
print("Ypur program is working perfect")
status = 1

}
}
}
})

return status
}

上述函数根据函数中传递的 utilityId 值过滤支付节点中存在的数据。但奇怪的是 observe(DataEventType.value, with:{(DataSnapshot) 这个事件并没有一直被触发。它只是不必要地跳过了那部分。我对 firebase 很陌生并且真的对这些不可预测的行为很生气。请帮助我。随时要求澄清。

最佳答案

firebase 在不同的线程中执行 firebase 查询函数,所以在你调用 checkpaid() 之后,它在另一个线程中运行 checkpaid() firebase 查询,它会从函数返回,即使你的查询在后台运行..所以看起来,checkpaid() 不工作,但实际上它在另一个线程上运行。

我认为您首先从付款中获取所有必需的数据,并将其存储在一个列表中,然后使用该列表与效用进行比较。

关于swift - databaseReference.observe(DataEventType.value, :{(DataSnapshot) not working properly all the time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604038/

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