2016-06-24 9 views
0

Ich habe einige Nachforschungen gemacht und ich verstehe wirklich nicht, was hier passiert ist. Ich habe diesen Fehler, wenn ich eine Zeile in einer Tabelle Ansicht auszuwählen:CoreData: Fehler: Fehler beim Aufrufen von designierten Initialisierer auf NSManagedObject Klasse

Merk [1392: 37721] Coredata: Fehler: Fehlgeschlagen bezeichnet Initialisierer auf NSManagedObject Klasse (LLDB) 'Wish.ProduitEntity' nennen

Der Fehler tritt bei der prepareForSegue-Methode in der ViewController-Klasse auf.

Danke für die Hilfe

import UIKit 
import CoreData 

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

@IBOutlet weak var leTbleView: UITableView! 

var arrayProduit = [ProduitEntity]() 

var produitSelectionne : ProduitEntity? = nil 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.leTbleView.dataSource = self 
    self.leTbleView.delegate = self 
} 

override func viewWillAppear(animated: Bool) { 
    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    let request = NSFetchRequest(entityName: "ProduitEntity") 
    var ilStock = [AnyObject]?() 

    do{ 
     try ilStock = context.executeFetchRequest(request) 
    } catch _ { 
    } 


    //put info in the tableView 
    if ilStock != nil { 
     arrayProduit = ilStock as! [ProduitEntity] 
    } 
    self.leTbleView.reloadData() 
} 


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return arrayProduit.count 
} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = UITableViewCell() 
    cell.textLabel!.text = (arrayProduit[indexPath.row]).nom 
    return cell 
} 


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    produitSelectionne = self.arrayProduit[indexPath.row] 
    performSegueWithIdentifier("detailSegue", sender: self) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "detailSegue" { 
     let detailVC = segue.destinationViewController as! DetailViewController 
     detailVC.uneInstanceEntity = self.produitSelectionne!} 
} 
} 



import UIKit 
import CoreData 

class DetailViewController: UIViewController { 

@IBOutlet weak var titleLbl: UILabel! 

@IBOutlet weak var storeLbl: UILabel! 

@IBOutlet weak var imageProduit: UIImageView! 



var uneInstanceEntity = ProduitEntity() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.titleLbl.text = uneInstanceEntity.nom 
    self.storeLbl.text = uneInstanceEntity.magasin 

} 
} 



import UIKit 
import CoreData 

class ajouterProduitViewController: UIViewController { 

@IBOutlet weak var modelTxtField: UITextField! 

@IBOutlet weak var magasinTxtField: UITextField! 

@IBOutlet weak var photoImage: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 

} 

//Add a new product 
func sauvegardeProduit() { 
    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    let objetEntity = NSEntityDescription.insertNewObjectForEntityForName("ProduitEntity", inManagedObjectContext: context) as!ProduitEntity 

    objetEntity.nom = modelTxtField.text 
    objetEntity.magasin = magasinTxtField.text 
    //objetEntity.unVisuel = UIImageJPEGRepresentation(UIImage(named: ""), 1) 

    do { 
     try context.save() 
    } catch _ { 
    } 
} 


@IBAction func saveBtn(sender: AnyObject) { 
    sauvegardeProduit() 
    self.dismissViewControllerAnimated(true, completion: nil) 

} 

@IBAction func cnclBtn(sender: AnyObject) { 
    self.dismissViewControllerAnimated(true, completion: nil) 
} 

}

Antwort

5

Das Problem ist, diese Zeile:

var uneInstanceEntity = ProduitEntity() 

Da eine Instanz direkt sind zu schaffen. Sie sollten das nicht tun, sollten Sie es optional machen oder gezwungen:

var uneInstanceEntity: ProduitEntity! 
+0

Vielen Dank Wain! Jetzt werde ich das genauer betrachten, um zu verstehen, was dort passiert. – Sylvain

Verwandte Themen