使用Firebase值进行计算

时间:2016-10-07 10:27:06

标签: swift firebase firebase-realtime-database

我尝试了一些简单的计算功能,我可以在Firebase中增加用户的声誉,String。所以我做到了,但问题是不是添加1,而是添加2,我在代码中看不到逻辑错误。

func reputationCalculation(){

        self.databaseRef.child("users").child(currentUser.generalDetails.uid).child("reputation").runTransactionBlock({
            (currentData:FIRMutableData!) in

            var count: Int = Int(self.currentUser.generalDetails.reputation)!// At this point it is 0 in my case
            count += 1// add one to previous value
            print(count)//print the value
            self.currentUser.generalDetails.reputation = String(count)//Set the value in Singleton
            self.reputationLabel.text = self.currentUser.generalDetails.reputation//Show on label
            currentData.value = String(count)
            return FIRTransactionResult.success(withValue: currentData)

        })
    }

例如,如果在Firebase节点中的信誉为“0”时调用func。它打印出12,并将最后一个值设置为Firebase。有什么问题?

1 个答案:

答案 0 :(得分:0)

您应该检查方法runTransactionBlock是否未被调用两次,它是否发生在firebase