【问题标题】:Charts in SwiftUI Fatal error: Array index out of range: file Swift/ContiguousArrayBuffer.swiftSwiftUI 中的图表致命错误:数组索引超出范围:文件 Swift/ContiguousArrayBuffer.swift
【发布时间】: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”。该错误与图表如何检测触摸并通过向上或向下舍入或找到最接近的值来确定它最接近的值有关。

标签: charts swiftui swift5


【解决方案1】:

使用 cocoapods 安装图表,然后在 BarChart 中选择 Bars 就可以正常工作了。

 struct Bar:UIViewRepresentable {
    var entries : [BarChartDataEntry]
   
    func makeUIView(context: Context) -> BarChartView {
        let chart = BarChartView()
        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.addDataSet(dataSet)
        return data
    }
    
  typealias UIViewType = BarChartView
  
}

【讨论】:

    猜你喜欢
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 2016-08-15
    相关资源
    最近更新 更多