Charts Pod问题:将entries设为类属性后图表出现额外数据
问题解决方法
问题核心在于类属性的entries未在每次刷新前清空:
- 原本的局部
entries每次调用setChart()都会重新初始化空数组,确保每次都是全新数据; - 改为类属性后,
entries会持久保留之前的数据,每次调用setChart()时直接追加新数据,导致旧数据被重复叠加。
修复方案
在setChart()方法的开头,先清空entries数组,再执行数据添加逻辑:
修改后的完整代码:
class HomeViewController: UIViewController { var pieChart = PieChartView() var entries: [ChartDataEntry] = [] override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) pieChart.delegate = self self.setChart() } func setChart() { entries.removeAll() // 关键:每次刷新前清空旧数据 for entry in 0..<(self.cellArr.count) { if self.cellArr.count > 0 { let dataEntry = PieChartDataEntry(value: Double(self.cellArr[entry].amount), label: String(self.cellArr[entry].type)) entries.append(dataEntry) } } updateSorting(values: entries) } func updateSorting(values: [ChartDataEntry]){ let dataSet = PieChartDataSet(entries: values, label: "") let data = PieChartData(dataSets: [dataSet]) dataSet.colors = ChartColorTemplates.colorful() pieChart.data = data pieChart.notifyDataSetChanged() } }
也可以选择直接重置为空数组,效果一致:
func setChart() { entries = [] // 直接重置为空数组 // 后续循环逻辑不变 }
两种方式都能保证每次刷新时entries是全新的空数组,不会累积旧数据,图表即可正常展示最新内容。
内容的提问来源于stack exchange,提问作者TheCrew
相关产品推荐
相关产品推荐

