gpt4 book ai didi

ios - 如何清除图表,然后使用 chartView.clear() 在 swift 3 中向其中添加数据

转载 作者:行者123 更新时间:2023-11-28 21:06:24 26 4
gpt4 key购买 nike

我正在使用图表库创建一些折线图,当没有可用数据时我希望清除图表。该图清除正常并显示其通常的“nodatatext”但是当我尝试再次设置图表时代码在设置数据的行上失败:fastestChartView.data = chartData3

func setChart3(dataEntryX forX:[String],dataEntryY forY: [Double]) {
fastestChartView.noDataText = "You need to provide data for the chart."
var dataEntries:[ChartDataEntry] = []
for i in 0..<forX.count{

let dataEntry = ChartDataEntry(x: Double(i), y: Double(forY[i]) , data: chugIndexArr3 as AnyObject?)
dataEntries.append(dataEntry)
}

let chartDataSet = LineChartDataSet(values: dataEntries, label: "Fastest Chugs")
chartDataSet.setColor(UIColor.green, alpha: 0.6)
chartDataSet.circleColors = self.colors3
chartDataSet.circleHoleColor = UIColor(red: 255/255, green: 223/255, blue: 24/255, alpha: 1.0)

chartData3 = LineChartData(dataSet: chartDataSet)
chartData3.setDrawValues(true)

fastestChartView.data = chartData3
fastestChartView.legend.enabled = false
fastestChartView.xAxis.labelPosition = .bottom
fastestChartView.xAxis.valueFormatter = IndexAxisValueFormatter(values: chugIndexArr3)
fastestChartView.animate(xAxisDuration: 1.0, yAxisDuration: 1.0)
fastestChartView.drawBordersEnabled = true
fastestChartView.data?.setValueFormatter(valueFormatter)

if chugIndexArr3.count > 25 {
fastestChartView.setVisibleXRange(minXRange: 10, maxXRange: 25)
fastestChartView.moveViewToAnimated(xValue: Double(self.chugIndexArr3.count - 25), yValue: 0, axis: .left, duration: 2)
} else if chugIndexArr3.count == 0 {
fastestChart.clear()
}
else {
fastestChartView.resetZoom()
}

}

我知道我的程序可以正常工作,因为我使用与尝试重新加载数据时相同的函数来初始显示图表。但出于某种原因,当我尝试使用 fastestChartView.clear() 然后尝试使用与 viewdidload() 中相同的方法设置数据时,它崩溃了。这是导致崩溃的 viewdidload() 和按钮操作函数中的代码:

self.ref.child("users").child(uid!).child("chugStats").child("4avgs").observeSingleEvent(of: .value, with: { (snapshot) in

if let dict = snapshot.value as? NSDictionary {

for index in dict.allKeys {


let currentKey = String(describing: index)

if currentKey != "avg" && currentKey != "fastest" {

let currentValue = dict[currentKey] as? String ?? ""

let messageArr = currentValue.components(separatedBy: ":")

self.chugIndexArr2.append(currentKey)
self.chugTimeArr2.append(Double(messageArr[0])!)
self.intervals2.append(Double(messageArr[1])!)

if let myDouble = NumberFormatter().number(from: messageArr[1])?.doubleValue {
let date = NSDate(timeIntervalSince1970: myDouble)
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .short
let dateStr = dateFormatter.string(from: date as Date)
self.chugInterval2.append(dateStr)
}

//Color array setup
if messageArr.count == 2 {
self.colors2.append(UIColor(red: 100/255, green: 200/255, blue: 110/255, alpha: 0.9))
} else if messageArr.count == 3 {
if messageArr[2] == "fun" {
self.colors2.append(UIColor(red: 100/255, green: 200/255, blue: 110/255, alpha: 0.9))
} else if messageArr[2] == "ranked" {
self.colors2.append(UIColor.red)
} else if messageArr[2] == "challenge" {
self.colors2.append(UIColor.blue)
}
}

}
}
let sorted1 = zip(self.chugTimeArr2, self.intervals2).sorted { $0.1 < $1.1 }
self.chugTimeArr2 = sorted1.map { $0.0 }

let sorted2 = zip(self.chugInterval2, self.intervals2).sorted { $0.1 < $1.1 }
self.chugInterval2 = sorted2.map { $0.0 }

let sorted3 = zip(self.chugIndexArr2, self.intervals2).sorted { $0.1 < $1.1 }
self.chugIndexArr2 = sorted3.map { $0.0 }

let sorted4 = zip(self.colors2, self.intervals2).sorted { $0.1 < $1.1 }
self.colors2 = sorted4.map { $0.0 }

}
self.setChart2(dataEntryX: self.chugIndexArr2, dataEntryY: self.chugTimeArr2)

})

请帮我解决这个问题。我找不到解决方法,也找不到在互联网上有同样问题的人。

最佳答案

我遇到了同样的问题。清除图表似乎出了点问题,可能并非所有变量都返回到它们的默认值。

我假设您使用的是 Charts v3.0.3(目前我自己使用的是 3.0.2)。我使用的修复程序应该足够好。

转到 AxisRendererBase.swift ,如果使用 Pod 则解锁文件,并将第 106 行(if labelCount == 0 || range <= 0 || range.isInfinite)更改为:if labelCount == 0 || range <= 0 || range.isInfinite || range.isNaN .

编辑:创建了一个 PR .

关于ios - 如何清除图表,然后使用 chartView.clear() 在 swift 3 中向其中添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496912/

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