Я пытаюсь отобразить значения на линейном графике с помощью модуля «Графики», за одну секунду я получаю 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()
}
}