【发布时间】:2021-02-07 11:19:29
【问题描述】:
我已经在 SwiftUI 中设置了图表,每当我触摸图表时都会收到此错误:
致命错误:数组索引超出范围:文件 Swift/ContiguousArrayBuffer.swift
这将我指向图表中的这一行:
return entries[position]
这是我的 UIRepresentable 图表代码。
struct Bar:UIViewRepresentable {
var entries : [BarChartDataEntry] = [
BarChartDataEntry(x: 1, y: 1)
, BarChartDataEntry(x: 2, y: 1)
]
func makeUIView(context: Context) -> BarChartView {
let chart = BarChartView()
chart.data = addData()
return chart
}
func updateUIView(_ uiView: BarChartView, context: Context) {
uiView.data = addData()
uiView.notifyDataSetChanged()
}
func addData() -> BarChartData
{
let data = BarChartData()
let dataSet = BarChartDataSet(entries: entries)
dataSet.colors = [NSUIColor.green]
dataSet.label = "My Set"
data.append(dataSet)
return data
}
typealias UIViewType = BarChartView
}
由于某种原因,它发送了 2 的位置,然后我将数组从索引中取出。 为什么发送错误的索引? 它真的应该让我在没有任何错误的情况下触摸图表中的栏。 有没有其他人处理过这个问题并提出了解决方案? 提前致谢。
【问题讨论】:
-
我一直在查看函数“open override func entryIndex”。该错误与图表如何检测触摸并通过向上或向下舍入或找到最接近的值来确定它最接近的值有关。