ios - 对于没有任何错误连接的键错误,类不符合键值编码
问题描述
我正在使用 Daniel Gindi 的图表库,我的想法是在 ScrollView 上显示多个折线图。
我有一个应该显示 4 个折线图的 ScrollView。它们将是 4 个独立的图表,即它们不会绘制在相同的轴上(尽管它们共享相同的 x 轴值)。由于 SIGABRT 错误,当我更改为此视图时,我的应用程序崩溃。
首先,我尝试为每个图表制作单独的函数,但我意识到由于在函数中使用 LineChartEntry,您不能这样做,它们必须是不同图表的单独实例。所以我尝试编写一个通用函数,如下所示。
import UIKit
import Charts
class sparkTrendController: UIViewController {
@IBOutlet weak var chiller1TrendSpark: LineChartView!
@IBOutlet weak var chiller2TrendSpark: LineChartView!
@IBOutlet weak var chiller3TrendSpark: LineChartView!
@IBOutlet weak var chiller4TrendSpark: LineChartView!
var numberOfSparksChiller1: [Double] = [5,8,6,4,2,1,2,1,1,0]
var numberOfSparksChiller2: [Double] = [10,13,8,7,8,7,5,4,2,1]
var numberOfSparksChiller3: [Double] = [15,13,8,2,2,7,5,5,6,1]
var numberOfSparksChiller4: [Double] = [12,3,5,7,3,7,5,4,7,1]
var daysNumbered: [Double] = [1,2,3,4,5,6,7,8,9,10]
var lineChartEntry1 = [ChartDataEntry]()
var lineChartEntry2 = [ChartDataEntry]()
var lineChartEntry3 = [ChartDataEntry]()
var lineChartEntry4 = [ChartDataEntry]()
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.title = "Trends of Sparks"
updateGraph(daysNumbered: daysNumbered, numberOfSparks: numberOfSparksChiller1, label: "Chiller 1", chiller: chiller1TrendSpark)
updateGraph(daysNumbered: daysNumbered, numberOfSparks: numberOfSparksChiller2, label: "Chiller 2", chiller: chiller2TrendSpark)
updateGraph(daysNumbered: daysNumbered, numberOfSparks: numberOfSparksChiller3, label: "Chiller 3", chiller: chiller3TrendSpark)
updateGraph(daysNumbered: daysNumbered, numberOfSparks: numberOfSparksChiller4, label: "Chiller 4", chiller: chiller4TrendSpark)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func updateGraph(daysNumbered: [Double], numberOfSparks: [Double], label: String, chiller: LineChartView) {
var lineChartEntry = [ChartDataEntry]()
for i in 0..<daysNumbered.count {
let value = ChartDataEntry(x: daysNumbered[i], y: numberOfSparks[i])
if chiller == chiller1TrendSpark {
lineChartEntry = lineChartEntry1
}
if chiller == chiller2TrendSpark {
lineChartEntry = lineChartEntry2
}
if chiller == chiller3TrendSpark {
lineChartEntry = lineChartEntry3
}
if chiller == chiller4TrendSpark {
lineChartEntry = lineChartEntry4
}
lineChartEntry.append(value)
//LineChartDataSet(entries: lineChartEntry, label: label)
LineChartDataSet(entries: lineChartEntry, label: label).colors = [NSUIColor.red]
let data = LineChartData()
data.addDataSet(LineChartDataSet(entries: lineChartEntry, label: label))
chiller.data = data
chiller.chartDescription?.text = "Number Of Sparks"
}
}
}
编辑:我尝试像这样重写代码,它仍然有同样的错误。
import UIKit
import Charts
class sparkTrendController: UIViewController {
@IBOutlet weak var chiller1TrendSpark: LineChartView!
@IBOutlet weak var chiller2TrendSpark: LineChartView!
@IBOutlet weak var chiller3TrendSpark: LineChartView!
@IBOutlet weak var chiller4TrendSpark: LineChartView!
var numberOfSparksChiller1: [Double] = [5,8,6,4,2,1,2,1,1,0]
var numberOfSparksChiller2: [Double] = [10,13,8,7,8,7,5,4,2,1]
var numberOfSparksChiller3: [Double] = [15,13,8,2,2,7,5,5,6,1]
var numberOfSparksChiller4: [Double] = [12,3,5,7,3,7,5,4,7,1]
var daysNumbered: [Double] = [1,2,3,4,5,6,7,8,9,10]
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.topItem?.title = "Trends of Sparks"
customizeChart(dataPoints: numberOfSparksChiller1, values: daysNumbered, lineChartView: chiller1TrendSpark, label: "Chiller 1 Sparks")
customizeChart(dataPoints: numberOfSparksChiller2, values: daysNumbered, lineChartView: chiller2TrendSpark, label: "Chiller 2 Sparks")
customizeChart(dataPoints: numberOfSparksChiller3, values: daysNumbered, lineChartView: chiller3TrendSpark, label: "Chiller 3 Sparks")
customizeChart(dataPoints: numberOfSparksChiller4, values: daysNumbered, lineChartView: chiller4TrendSpark, label: "Chiller 4 Sparks")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func customizeChart (dataPoints: [Double
], values: [Double], lineChartView: LineChartView, label: String) {
//1) set ChartDataEntry
var dataEntries: [ChartDataEntry] = []
for i in 0..<dataPoints.count {
let entries = ChartDataEntry(x: values[i], y: dataPoints[i])
//let dataEntry = LineChartDataSet(entries: entries, label: label)
dataEntries.append(entries)
}
//2) set ChartDataSet
let chartDataSet = LineChartDataSet(entries: dataEntries, label: label)
//3) set ChartData
let lineChartData = LineChartData(dataSet: chartDataSet)
//4) assign it to chart's data
lineChartView.data = lineChartData
}
}
对于第二个代码,这是调试区域的错误。
Github 仓库:https ://github.com/danialaqil/TFAApp/tree/master/AlarmChartsApp 。有问题的代码是 sparkTrendController.swift 文件
解决方案
推荐阅读
- python - SequentialFeatureSelector 中的“ci_bound”是什么意思?
- git - Git:将不受版本控制的目录与远程目录同步
- c# - 控制器通过asp.net MVC 5渲染rdlc报告并开始表单助手
- c++ - 基类的数据成员在派生类中使用时给出垃圾值
- ios - Tableview 的内容高度始终为零
- r - 在 R 中使用 dplyr 进行情感分析后丢失行
- android - 如何通过触摸打开 Pdf 文件并使用我的应用程序打开
- angular - 在角度服务中使用变量和使用主题创建可在整个应用程序中使用的全局变量之间的区别?
- javascript - 提高 Wordpress 上的页面速度(GT metrix 和 Google 分析)
- reactjs - 如何从 Apollo 缓存中查询没有 ROOT_QUERY 上的查询