Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅
`` ''
BarChartView {
private class BarChartFormatter: NSObject,IAxisValueFormatter {
var values : [String]
required init (values : [String]) {
self.values = values
super.init()
}
func stringForValue(_ value: Double, axis: AxisBase?) -> String {
return values[Int(value)]
}
}
func setChartValues (xAxisValues : [String] , values : [Double],label : String) {
var barChartDataEntries = [BarChartDataEntry]()
for i in 0..<values.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: values[i])
barChartDataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: barChartDataEntries, label: label)
chartDataSet.colors = ChartColorTemplates.colorful()
let chartData = BarChartData(dataSet: chartDataSet)
let formatter = BarChartFormatter(values: xAxisValues)
let xAxis = XAxis()
xAxis.valueFormatter = formatter
self.xAxis.valueFormatter = xAxis.valueFormatter
self.xAxis.labelPosition = .bottom
self.data = chartData
// self.data?.notifyDataChanged()
// self.notifyDataSetChanged()
self.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .easeInBack) // Cause crash
}
}
`` ''
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ»Π΅ΡΠ°Π΅Ρ Π·Π΄Π΅ΡΡ
for j in 0 ..< Int(ceil(Double(dataSet.entryCount) * animator.phaseX)) // Crash here
{
guard let e = dataSet.entryForIndex(j) as? BarChartDataEntry else { continue }
ΠΠ΅ΡΡΡΡΠ°Π½ΠΈΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅ ΡΠ΄Π°Π΅ΡΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ upperBound <lowerBound
(lldb) po dataSet.entryCount
12
(lldb) po animator.phaseX
-0,085005447941268492
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ΅ΡΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΌΠ°Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΅ΡΡΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
ΠΡΠ΅ΠΌΡ Π²ΡΡΠ»ΠΎ
Π»Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅
DispatchQueue.main.async(execute: {() -> Void in
self.animate(xAxisDuration: 2.0, yAxisDuration: 2.0, easingOption: .easeInBack)
})
Π― Π΄ΡΠΌΠ°Ρ ΡΠ°ΠΊ,
for j in 0 ..< Int(ceil(Double(dataSet.entryCount) * animator.phaseX))
ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π΄Π»Ρ
for j in stride(from: 0, to: Int(ceil(Double(dataSet.entryCount) * animator.phaseX)), by: 1)
@PrashantKT Π£ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠ°Ρ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΡΠΉ @txoan , ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠ³ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ Π»ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. @jjatie @ liuxuan30