Я сейчас экспериментирую с ShinobiCharts и создал новый проект, в котором это можно сделать.Пользовательский источник данных не создается правильно
У меня есть объект с пользовательским Инициализатором, который соответствует протоколу источника данных:
import ShinobiCharts
import UIKit
class GraphDataSource: NSObject, SChartDatasource {
let data: [Double]
/* Initialisation Methods */
init(data: [Double]) {
self.data = data
}
/* SChartDatasource Methods */
func numberOfSeries(in chart: ShinobiChart) -> Int {
return 1
}
func sChart(_ chart: ShinobiChart, seriesAt index: Int) -> SChartSeries {
return SChartColumnSeries()
}
func sChart(_ chart: ShinobiChart, numberOfDataPointsForSeriesAt seriesIndex: Int) -> Int {
return data.count
}
func sChart(_ chart: ShinobiChart, dataPointAt dataIndex: Int, forSeriesAt seriesIndex: Int) -> SChartData {
return dataPoint(forDataIndex: dataIndex)
}
func dataPoint(forDataIndex dataIndex: Int) -> SChartData {
return SChartDataPoint(xValue: dataIndex, yValue: data[dataIndex])
}
}
Я тогда назначить экземпляр этого объекта в качестве источника данных диаграммы:
let data: [Double] = [0, 0, 0, 0, 0, 0, 10, 10, 30, 50, 100, 100, 80, 40, 30, 50, 40, 70, 20, 10, 10, 10, 0, 0]
...
let dataSource = DayGraphDataSource(data: data)
chart.datasource = dataSource
Это, однако, приводит к сбою приложения, жалуясь на то, что -[<classname> numberOfSeriesInSChart:]: unrecognized selector sent to instance
, где <classname>
может быть, по-видимому, любым именем класса. Я видел его как __NSCFNumber
и NSISRestrictedToZeroMarkerVariable
среди других - кажется, что он изменился при свежих установках приложения.
Однако, если я поставил точку останова на строке, которая фактически устанавливает источник данных на диаграмме, чтобы этот пользовательский объект и распечатать экземпляр, который я создал, а затем продолжить выполнение, приложение работает абсолютно нормально.
Когда у меня был сам контроллер представления как источник данных, с той же реализацией источника данных, все работало, как ожидалось.
Это билет - спасибо! –