gpt4 book ai didi

swift - 无法将所有 firebase 数据显示为折线图

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

我试图将我的 firebase 数据显示到我的折线图中,但它只显示数据库中的一个数据,而我想显示数据库中的所有数据。我是这方面的新手,所以如果有人能帮助我,那就太好了。

let ref = Database.database().reference().child("WeightTracker")

ref.child("\(currentUser)").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in

for rest in snapshot.children.allObjects as! [DataSnapshot] {

guard let restDict = rest.value as? [String: Any] else { continue }
let weight = restDict["weight"] as? String
print(weight as Any)
let date = restDict["date"] as? String
print(date as Any)

var xAxisValues = [""]
var yAxisValues = [0.0]
let total = Int(Double(weight!)!) * Int(2.20)
xAxisValues.append(date!)
yAxisValues.append(Double(total))
let formatter = WTRandomVC(lineChart: self.lineChartsView, xArray: xAxisValues , yArray: yAxisValues)
self.lineChartsView?.data?.setValueFormatter(formatter)
continue
}

}

最佳答案

您的代码循环处理从数据库中获得的结果,然后使用该数据为每个单独的项目创建一个新的格式化程序,并将其设置到图表中。这意味着一旦代码完成,图表将只显示数据库的最后结果。要显示所有结果,您需要将数据收集到一个格式化程序中,然后在聊天中显示

代码应该是这样的:

let ref = Database.database().reference().child("WeightTracker")

ref.child("\(currentUser)").queryOrderedByKey().observeSingleEvent(of: .value) { (snapshot) in

var xAxisValues = [""]
var yAxisValues = [0.0]

for rest in snapshot.children.allObjects as! [DataSnapshot] {

guard let restDict = rest.value as? [String: Any] else { continue }
let weight = restDict["weight"] as? String
let date = restDict["date"] as? String

let total = Int(Double(weight!)!) * Int(2.20)
xAxisValues.append(date!)
yAxisValues.append(Double(total))
}
let formatter = WTRandomVC(lineChart: self.lineChartsView, xArray: xAxisValues , yArray: yAxisValues)
self.lineChartsView?.data?.setValueFormatter(formatter)

}

所以在上面我们已经拉取了带有数据的数组,并创建了一个 WTRandomVCfor 循环之外,以便它们对所有数据只发生一次。

关于swift - 无法将所有 firebase 数据显示为折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56271093/

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