Skip to content

Thread 1: Fatal error: Range requires lowerBound <= upperBound #5229

Open
@enefry

Description

@enefry

How fix this issue?
version: - DGCharts (5.1.0):

Image

my dataset is:

Image

my code is :

private func createDraw(_ key: String, titleText: String) -> (UIView, DGCharts.LineChartView) {
    createViewTuples(key, titleText: titleText) {
        let chart = LineChartView(frame: CGRectMake(0, 0, 120, 40))
        chart.xAxis.enabled = false
        let yAxis = chart.rightAxis
        yAxis.labelFont = UIFont.systemFont(ofSize: 5)
        yAxis.setLabelCount(3, force: true)
        yAxis.labelTextColor = .white
        yAxis.labelPosition = .insideChart
        yAxis.axisLineColor = .white
        chart.rightAxis.enabled = true
        chart.leftAxis.enabled = false
        chart.pinchZoomEnabled = false
        chart.legend.enabled = false
        chart.heightAnchor.constraint(equalToConstant: 60).isActive = true
        return chart
    }
}

private func updateLineDraw(maxCount: Int = 30, newValues: [(Float, String?)], chart: DGCharts.LineChartView) {
    let data: LineChartData = chart.data as? LineChartData ?? {
        let data = LineChartData(dataSets: [])
        chart.data = data
        data.setDrawValues(false)
        return data
    }()
    for dataSetIndex in 0 ..< max(data.dataSets.count, newValues.count) {
        var newValue: Float = 0
        var label: String = ""
        if newValues.count > dataSetIndex {
            newValue = newValues[dataSetIndex].0
            label = newValues[dataSetIndex].1 ?? label
        }
        var dataSet: LineChartDataSet!
        if data.dataSets.count > dataSetIndex,
           let ds = data.dataSets[dataSetIndex] as? LineChartDataSet {
            dataSet = ds
        } else {
            dataSet = LineChartDataSet(entries: [], label: label)
            dataSet.mode = .cubicBezier
            dataSet.drawCirclesEnabled = false
            dataSet.lineWidth = 1.8
            dataSet.circleRadius = 4
            dataSet.setCircleColor(.white)
            dataSet.highlightColor = UIColor(red: 244 / 255, green: 117 / 255, blue: 117 / 255, alpha: 1)
            dataSet.fillColor = .white
            dataSet.fillAlpha = 1
            dataSet.drawHorizontalHighlightIndicatorEnabled = false
            data.append(dataSet)
        }
        var dataEntrys = dataSet.entries
        let delta = maxCount - dataEntrys.count - 1
        if delta > 0 {
            for idx in 0 ..< delta {
                dataEntrys.append(ChartDataEntry(x: Double(idx), y: 0))
            }
        }
        let maxX = dataEntrys.reduce(0) { idx, entry in
            idx > entry.x ? idx : entry.x
        }
        dataEntrys.append(ChartDataEntry(x: maxX + 1, y: Double(newValue)))
        dataSet.replaceEntries(dataEntrys)
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions