2016-01-30 1 views
1

Donc, je suis le tutoriel iOS-Charts sur AppCoda, je l'ai suivi parfaitement, puis quand j'avais des problèmes j'ai aussi copié le code pour correspondre exactement à leur.Erreur iOS-Charts: Thread1: EXC_BAD_ACCESS (code = 2, adresse = 0x2a0c220)

Le problème est que lorsque j'essaie de créer un graphique à secteurs, exécutez-le. J'obtiens l'erreur:

Thread1: EXC_BAD_ACCESS (code=2, address=0x2a0c220)

et l'application se bloque. Quand il tombe en panne, il met en évidence cette ligne:

pieChartView.data = pieChartData 

est ici comme capture d'écran de l'écran:

screen shot

Voici le code complet du viewcontroller.swift:

import UIKit 
import Charts 

class ViewController: UIViewController { 

@IBOutlet weak var pieChartView: PieChartView! 

func setChart(dataPoints: [String], values: [Double]) { 

    var dataEntries: [ChartDataEntry] = [] 

    for i in 0..<dataPoints.count { 
     let dataEntry = ChartDataEntry(value: values[i], xIndex: i) 
     dataEntries.append(dataEntry) 
    } 

    let pieChartDataSet = PieChartDataSet(yVals: dataEntries, label: "Units Sold") 
    let pieChartData = PieChartData(xVals: dataPoints, dataSet: pieChartDataSet) 
    pieChartView.data = pieChartData 

    var colors: [UIColor] = [] 



    for i 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 




} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"] 
    let unitsSold = [20.0, 4.0, 6.0, 3.0, 12.0, 16.0] 

    setChart(months, values: unitsSold) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


} 

Répondre

1

Il semble que vous ayez manqué cette pièce:

Next drag a View onto the Bar Chart View Controller and pin its edges as shown. This View is a child of the main View in the controller. 

Vous devez créer un UIView dans votre View Controller et le lier à la @IBOutlet faible var pieChartView: PieChartView! dans votre code.

Ensuite, cela va fonctionner. Et ça ressemble à une belle bibliothèque.

Espérons que ça aide. S'il vous plaît laissez-nous savoir.

EDIT:

Accédez à votre contrôleur de vue sur le story-board et faites glisser un UIView. Sélectionnez ensuite UIView et définissez sa classe en tant que PieChartView dans l'inspecteur d'identité. Ouvrez le fichier swift ViewController et faites un clic droit sur le petit cercle sur la ligne @IBOutlet en haut et faites-le glisser sur l'UIView que vous venez de créer en maintenant le clic droit et laissez-le. Maintenant, vous avez connecté la sortie au code et il reconnaîtra le pieChartView var comme un objet à la place qui est actuellement.

This is how it looks