Firebase runTransactionBlock错误maxretry

时间:2017-07-22 15:33:58

标签: ios swift firebase firebase-realtime-database

我有这个功能可以更新用户的exp点:

func submitExpPoints(_ points: Int, uid: String) {
    let dbRef = FIRDatabase.database().reference().child("users").child(uid)

    dbRef.runTransactionBlock({ (currentData:FIRMutableData) -> FIRTransactionResult in
        print("currentData", currentData.value!)
        var dataToUpdate = currentData.value as? [String : Any]

        var expPoints = dataToUpdate?["expPoints"] as? Int ?? 0
        expPoints += points
        dataToUpdate?["expPoints"] = expPoints
        currentData.value = dataToUpdate
        return FIRTransactionResult.success(withValue: currentData)

    }) {(error,commited,snapshot) in
        if let error = error {
            print("errorrrrr", error.localizedDescription)
        }
    }

}

我面临的问题是当我将孩子从“用户”更改为“统计”时,模拟器无法完成事务并返回maxretry错误。

现在,整个故事中最奇怪的事情(至少对我来说)是当从真实设备运行时,同一事务完成得很好。

然后当我将孩子从“统计”变回“用户”时,一切都像我的iPhone和模拟器上的魅力一样。

有谁能帮我弄清楚这里出了什么问题?

1 个答案:

答案 0 :(得分:0)

这件事发生在我身上,事实证明我使用的是CGFloat而不是Int。然后,我在代码中使用了Ints,但是我的数据库已经有了分数,因此我需要重置数据库并在所有地方使用Ints。