作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个星级评定系统,用户可以对某个项目进行一到五颗星的评分,并查看所有用户的平均星级评定。
到目前为止,我已经能够将用户评级发送到我的 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/
我是一名优秀的程序员,十分优秀!