作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
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/
func checkPaid(utilityId : String) -> Int{ var amount:String = "" var status = 0
我是一名优秀的程序员,十分优秀!