问题陈述:由于在 swift 3.0 语法错误中使用“danielgindi/Charts 库”实现条形图时出现一些错误,因此无法运行。
Swift 3.0 中的实际错误:
纠正上述错误后,下一行又出现另一个错误,如下所示。
编码内容:
import Charts
class ChartViewController: UIViewController {
@IBOutlet var barChartView: BarChartView!
var months: [String]!
var dataEntries: [BarChartDataEntry] = []
override func viewDidLoad() {
super.viewDidLoad()
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0, 4.0, 18.0, 2.0, 4.0, 5.0, 4.0]
setChart(dataPoints: months, values: unitsSold)
}
func setChart(dataPoints: [String], values: [Double]) {
barChartView.noDataText = "You need to provide data for the chart."
for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(x: Double(i), yValues: [values[i]])
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")
let chartData = BarChartData(xVals: months, dataSet: chartDataSet)
barChartView.data = chartData
}
请帮助我,如何解决 swift 3.0 中的此类错误
最佳答案
我也遇到过这个问题。这是这里的这一行:
let dataEntry = BarChartDataEntry(x: Double(i), yValues: [values[i]])
您无法将 dataPoints: [String] 转换为 Double 类型。
我的解决方案是删除 Double。那么这不满足我的数据类型,所以我将它们全部设为 [Int] 类型,如下所示:
func setChart(dataPoints: [Int], values: [Int]) {
self.noDataText = "You need to provide data for the chart."
var dataEntries: [BarChartDataEntry] = []
for i in 0..<dataPoints.count {
let dataEntry = BarChartDataEntry(x: Double(i), y: Double(values[i]) )
dataEntries.append(dataEntry)
}
let chartDataSet = BarChartDataSet(values: dataEntries, label: "Units Sold")
let chartData = BarChartData(dataSet: chartDataSet)
self.data = chartData
您可以将 [Int] 转换为 Double,这样就解决了我的问题。我将变量 Months: [String] 更改为
let months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
关于swift - 如何使用 danielgindi/Charts 库和 Swift 3.0 绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41585500/