swift - 如何使用 danielgindi/Charts 库和 Swift 3.0 绘制条形图

标签 swift charts swift3

问题陈述:由于在 swift 3.0 语法错误中使用“danielgindi/Charts 库”实现条形图时出现一些错误,因此无法运行。

Swift 3.0 中的实际错误:

enter image description here

纠正上述错误后,下一行又出现另一个错误,如下所示。

enter image description here

编码内容:

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/

相关文章:

swift - 在 Swift 的 AFNetworking 2.0 中使用 CDLJSONPResponseSerializer 处理 JSONP

Swift 4 contains 方法对于像 "as"这样的短单词并不起作用

charts - 在 QlikSense 图表中选择一项测量

javascript - 如何在剑道散点线系列类型的 x 轴上添加完整日期

javascript - 如何修改带幻灯片效果的饼图大小

swift - AVCapturePhoto 为什么我的照片总是为零?

swift - swift 3 中的 UITextView 边框

ios - 根据您来自的类别为变量赋予不同的值(Swift)

ios - MapKit LocalSearch 不工作

swift - Swift 3 中的多个 NSFetchedResultsControllers