我有这个功能可以更新用户的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和模拟器上的魅力一样。
有谁能帮我弄清楚这里出了什么问题?
答案 0 :(得分:0)
这件事发生在我身上,事实证明我使用的是CGFloat而不是Int。然后,我在代码中使用了Ints,但是我的数据库已经有了分数,因此我需要重置数据库并在所有地方使用Ints。