gpt4 book ai didi

ios - 将 Firebase 键值对拆分为单独的数组

转载 作者:行者123 更新时间:2023-11-29 05:30:10 25 4
gpt4 key购买 nike

我正在开发一个星级评定系统,用户可以对某个项目进行一到五颗星的评分,并查看所有用户的平均星级评定。

到目前为止,我已经能够将用户评级发送到我的 firebase 数据库,其中键值对由用户 ID 及其给定的 Double 评级组成。我还可以检索所述数据并将其打印到控制台,但问题是我只需要新数组中的评级加倍即可计算平均评级;不是它附带的用户 ID 字符串。

如何将给定 Double 的用户 ID 字符串和评级分开,以便我可以仅使用评级数字?

我尝试过创建一个新的空数组,并以多种不同的方式将 Firebase 中的 Double 分数附加到其中,但似乎都不起作用,我也无法弄清楚原因。

使用以下代码,我可以打印出该项目的键值对 (sentData1)

        handle = ref.child(sentData1).observe(.value, with: { (snapshot) in

print(snapshot)

})

更新:我设法使用这段代码得到了我想要的东西:

ref.observe(.value) { (snapshot) in
if let data = snapshot.value as? [String: Any] {
let values = Array(data.values)

print(values)
}
}

但是,我现在遇到一个奇怪的问题:当第一次启动应用程序并给不同的项目评分时,它可以完美地以数组格式显示该项目获得的所有评分 [2, 5, 3, 4]。然而,当我继续对更多项目进行评分时,它会随机开始为我提供数组两次,然后为同一项目提供三次,依此类推:

[4, 2, 3, 4]

[4,2,3,4][4,2,3,4]

一段时间后它最终崩溃并给出错误消息

"Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value"

在将数据写入 Firebase 数据库的代码行中:

userDB.child(sentData2).child(UserID!).setValue(cosmosRating!)

最佳答案

let dict = ["userId1" : 2.4, "userId2" : 2.0, "userId3": 4.5]

你可以简单地做

let array = Array(dict.values)
print(array)

// Prints [2.0, 2.4, 4.5]

关于ios - 将 Firebase 键值对拆分为单独的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673819/

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