flusebaer

Mitglied

Zuletzt aktiv vor 2 Jahren

  1. vor 2 Jahren
    j M Y, g:ia \G\M\TO
    flusebaer beginnt die Unterhaltung Speichern mittels Core Data.

    Hallo Zusammen,

    ich beschäftige mich erst seit kurzer Zeit mit SWIFT.
    Ich habe eine Klasse angelegt in der ich Unternehmen und dessen Orte mittels Core Data speichern möchte. Nach der Eingabe der entsprechende Werte in dem Alert wird jedoch nichts gespeichert und anschließend im TableView angezeigt. Die Speicherfunktion: self.context!.save(&error) ergibt im Debugger NIL. Mache ich irgendwas falsch oder habe ich etwas vergessen? Danke vorab für die Hilfe!

    Entity: T_Unternehmen

    import Foundation
    import CoreData
    
    class T_Unternehmen: NSManagedObject {
    
        @NSManaged var bezeichnung: String
        @NSManaged var ort: String
        @NSManaged var produkte: NSSet
    
    }

    Klasse: Unternehmen.swift

    import UIKit
    import CoreData
    
    class Unternehmen: UITableViewController {
    
        var company = [T_Unternehmen]()
        
               let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
    
        
        func LoadDataDB() {
            
            
            let fetchRequest = NSFetchRequest(entityName: "T_Unternehmen")
            
            var error: NSError?
            
            let company = context!.executeFetchRequest(fetchRequest, error: &error) as! [T_Unternehmen]?
                println(error?.localizedFailureReason)
           
            
            self.tableView.reloadData()
            
        }
        
        @IBAction func NewCompanyPress(sender: UIBarButtonItem) {
            
            var alert = UIAlertController(title: "Wo einkaufen?", message: "Bitte geben Sie eine neues Unternehmen ein?", preferredStyle: .Alert)
            
                alert.addTextFieldWithConfigurationHandler() {
                textField in
                textField.placeholder = "Unternehmen"
                textField.becomeFirstResponder()
            }
            
            alert.addTextFieldWithConfigurationHandler() {
                textField in
                textField.placeholder = "Ort"
            }
            
            alert.addAction(UIAlertAction(title: "Hinzufügen", style: .Default, handler: {
               action in
                var newCompany = NSEntityDescription.insertNewObjectForEntityForName("T_Unternehmen", inManagedObjectContext: self.context!) as! T_Unternehmen
                
                //newCompany.setValue(alert.textFields![0] as! UITextField, forKey: "bezeichnung")
                 newCompany.bezeichnung = (alert.textFields![0] as! UITextField).text
                 newCompany.ort = (alert.textFields![1] as! UITextField).text
                 var error : NSError?
                if(self.context!.save(&error) ) {
                    println(error)
                }
                
            }))
            
            alert.addAction(UIAlertAction(title: "Abbrechen", style: .Cancel, handler: nil))
        
            presentViewController(alert, animated: true, completion: nil)
        }
    
        override func viewDidLoad() {
            LoadDataDB()
    
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        // MARK: - Table view data source
    
        override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
            // #warning Potentially incomplete method implementation.
            // Return the number of sections.
            return 0
        }
    
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            // #warning Incomplete method implementation.
            // Return the number of rows in the section.
            return company.count
        }
    
        
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
        
        cell.textLabel!.text = "\(company[indexPath.row].bezeichnung)"
        
        return cell
    
        }
    }

    Gruß
    flusebaer

  2. j M Y, g:ia \G\M\TO
    flusebaer ist dem Forum beigetreten.