Swift: вывод значений на линейный график - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь отобразить значения на линейном графике с помощью модуля «Графики», за одну секунду я получаю 200 значений с помощью оборудования Bluetooth. Мне нужно отобразить их все, проблема, с которой я сталкиваюсь, - это большаязадержка в построении графика, и график очень резкий.

это моя функция настройки графика:

@IBOutlet weak var chartView: LineChartView!

 func setChart(){
        let set_a: LineChartDataSet = LineChartDataSet(values: [ChartDataEntry](), label: "a")
        set_a.drawCirclesEnabled = false
        set_a.setColor(.blue)
        chartView.data = LineChartData(dataSet: set_a)
        chartView.setScaleEnabled(true)
        chartView.isUserInteractionEnabled = true
        chartView.setDragOffsetX(200)
        chartView.scaleYEnabled = true
    }

и это функция обновления диаграммы:

    var i=0

    func updateCounter(){
        if !stopped{
            if recieve{
                chartView.data?.addEntry(ChartDataEntry(x: Double(i), y: Double(Constants.values[i])), dataSetIndex: 0)
                chartView.notifyDataSetChanged()
              chartView.moveViewToX(Double(i+40))
            i+=1
            }
        }else{return}
    }

и вот где я получаю значения:

    func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?){
        if let data = characteristic.value
        {
            var values = [UInt8](repeating: 0, count: data.count)
            (data as NSData).getBytes(&values, length:data.count)
            for value in values
            {
                Constants.values.append(Double(value))
            }
            recieve = true
            print(values)
            updateCounter()
        }

    }
...