Thanks to visit codestin.com
Credit goes to github.com

Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions