2016-12-23 6 views
1

Im mit Charts Version 3.0.1. Ich lerne gerade Swift, indem ich mein Rails-Projekt umstelle. Ich habe keine Kenntnis von Objective C, also bitte ertragen Sie mit mir; Ich habe es bis jetzt gut gemacht.Korrekte Daten nicht in ios-Charts

unter Mein Code ist/kann nicht korrekt als Im formatiert fehlt das days Array in der PieChart:

enter image description here

Zahlen scheinen nicht korrekt zu sein. Der Code:

@IBOutlet weak var chartView: PieChartView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let days = ["Mo", "Tu", "Wed", "Thur", "Fri", "Sat", "Sun"] 
    let gross = [11.00, 90.95, 250.00, 40.90, 60.88, 99.99, 25.00] 

    setChart(dataPoints: days, values: gross) 
} 

func setChart(dataPoints: [String], values: [Double]) { 
    var dataEntries: [ChartDataEntry] = [] 

    for i in 0..<dataPoints.count { 

     let dataEntry = ChartDataEntry(x: values[i], y: Double(i)) 
     dataEntries.append(dataEntry) 

    } 
    let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Gross Income") 
    pieChartDataSet.sliceSpace = 2.0 
    let pieChartData = PieChartData(dataSets: [pieChartDataSet]) // somewhere here confuses me. 

    var colors: [UIColor] = [] 

    for _ in 0..<dataPoints.count { 
     let red = Double(arc4random_uniform(256)) 
     let green = Double(arc4random_uniform(256)) 
     let blue = Double(arc4random_uniform(256)) 

     let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1) 
     colors.append(color) 
    } 

    pieChartDataSet.colors = colors 

    chartView.data = pieChartData 
} 

Habe ich etwas verpasst? Ihr zweites Auge würde sehr geschätzt werden.

Antwort

2

Sie haben x & Y-Werte geändert und daher wird der Index als Wert Ihres Tortendiagramms angezeigt. Bitte verwenden Sie auch PieChartDataEntry. (Arbeits Code auf meinem Kasten)

override func viewDidLoad() { 
    super.viewDidLoad() 
    let days = ["Mo", "Tu", "Wed", "Thur", "Fri", "Sat", "Sun"] 
    let gross = [11.00, 90.95, 250.00, 40.90, 60.88, 99.99, 25.00] 

    setChart(days: days, gross: gross) 
    } 

    func setChart(days: [String], gross: [Double]) { 
    var dataEntries: [ChartDataEntry] = [] 

    for i in 0..<days.count { 
     let dataEntry = PieChartDataEntry(value : gross[i], label : days[i]) 
     dataEntries.append(dataEntry) 
    } 

    let pieChartDataSet = PieChartDataSet(values: dataEntries, label: "Gross Income") 
    pieChartDataSet.sliceSpace = 2.0 
    let pieChartData = PieChartData(dataSets: [pieChartDataSet]) 

    var colors: [UIColor] = [] 

    for _ in 0..<days.count { 
     let red = Double(arc4random_uniform(256)) 
     let green = Double(arc4random_uniform(256)) 
     let blue = Double(arc4random_uniform(256)) 

     let color = UIColor(red: CGFloat(red/255), green: CGFloat(green/255), blue: CGFloat(blue/255), alpha: 1) 
     colors.append(color) 
    } 

    pieChartDataSet.colors = colors 
    pieChartView.data = pieChartData 
    } 

Versuchen Sie dies und lassen Sie mich wissen.

+0

Mein Problem ist hier: 'let pieChartDataSet = PieChartDataSet (yVals: dataEntries, Label:" Bruttoeinkommen ")'. Ich bekomme 'Falsche Argumentbezeichnung in Zelle (habe 'yVals: label:', expected 'values: label:')'. Hast du in Charts 3 etwas verändert? – Sylar