gpt4 book ai didi

ios - Firebase:每次循环遍历数组时都运行事务

转载 作者:行者123 更新时间:2023-11-28 12:28:49 25 4
gpt4 key购买 nike

我正在尝试遍历 Array 并运行事务以将每个项目上传到 Firebase,但我不确定我想做的事情是否可行。

我的想法是:我有一个问题数组 ["problemType1", "problemType2", ... "problemType10"] 我给用户 n 时间解决它。最后,我将解决的问题放在Array中,并上传到Firebase。如果问题存在于数据库中,只需更新他的值。

这样,我想跟踪玩家使用哪种类型的问题更容易解决。目前,我编写的代码只上传了一个问题。我做错了什么?

func uploadTheResolvedProblemsToDB(problems: [String], uid: String) {

let refDB = FIRDatabase.database().reference().child("users").child(uid).child("problems")

for problem in problems {

refDB.runTransactionBlock({ (currentData:FIRMutableData) -> FIRTransactionResult in

var dataToUpdate = currentData.value as? [String : Any]

if dataToUpdate?[problem] == nil {
dataToUpdate = [problem: 0]
var theProblem = dataToUpdate?[problem] as? Int ?? 0
theProblem += 1
dataToUpdate?[problem] = 1
currentData.value = dataToUpdate
return FIRTransactionResult.success(withValue: currentData)
}
else
{
var theProblem = dataToUpdate?[problem] as? Int ?? 0
theProblem += 1
dataToUpdate?[problem] = theProblem
currentData.value = dataToUpdate
return FIRTransactionResult.success(withValue: currentData)
}
}) {(error,commited,snapshot) in
if let error = error {
print("errorrrrr", error.localizedDescription)
}
}
}
}

我的数据库结构是:

users
I_uid
I_problems
I_problem1: 1
problem2: 1
problem3: 1

问题是 child 。 problem1, problem2, problem3 是数值,1 是解决的次数,每个问题都解决了。

最佳答案

我仍然认为这个问题是你的引用。

func uploadTheResolvedProblemsToDB(problems: [String], uid: String) {
let refDB = FIRDatabase.database().reference().child("users").child(uid).child("problems")
for problem in problems {
refDB.child(problem).runTransactionBlock({ (currentData: FIRMutableData) -> FIRTransactionResult in
var value = currentData.value as? Int
if value == nil {
value = 1
} else {
value += 1
}
currentData.value = value
return FIRTransactionResult.success(withValue: currentData)
}) { (error, comited, snapshot) in
if let error = error {
print("errorrrrr", error.localizedDescription)
}
}
}
}

关于ios - Firebase:每次循环遍历数组时都运行事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42680372/

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