2016-03-23 6 views
0

Ich habe den folgenden Code, der ohne Fehler ausgeführt wird. Das Problem ist, dass nur der letzte Eintrag gespeichert wird ("Jack Daniels", 3). Wie ändere ich das, damit alle drei Einträge gespeichert werden?Wie können mehrere Einträge in CoreData gespeichert werden?

let employees = NSEntityDescription.insertNewObjectForEntityForName("Employees", inManagedObjectContext: managedObject) 

employees.setValue("John Doe", forKey: "employeename") 
employees.setValue(1, forKey: "id") 
employees.setValue("Jane Doe", forKey: "employeename") 
employees.setValue(2, forKey: "id") 
employees.setValue("Jack Daniels", forKey: "employeename") 
employees.setValue(3, forKey: "id") 

do { 
    try managedObject.save() 
} catch { 
    print("problem saving") 
} 
+0

Sie ändern die Werte für das gleiche Objekt. So speichert es nur die zuletzt eingegebenen Daten. Sie müssen verschiedene Objekte erstellen und die Werte festlegen. –

Antwort

2
let employees = NSEntityDescription.insertNewObjectForEntityForName("Employees", inManagedObjectContext: managedObject) 
let employees1 = NSEntityDescription.insertNewObjectForEntityForName("Employees", inManagedObjectContext: managedObject) 
let employees2 = NSEntityDescription.insertNewObjectForEntityForName("Employees", inManagedObjectContext: managedObject) 

employees.setValue("John Doe", forKey: "employeename") 
employees.setValue(1, forKey: "id") 
employees1.setValue("Jane Doe", forKey: "employeename") 
employees1.setValue(2, forKey: "id") 
employees2.setValue("Jack Daniels", forKey: "employeename") 
employees2.setValue(3, forKey: "id") 

do { 
    try managedObject.save() 
} catch { 
    print("problem saving") 
} 
+0

Danke. Da ich mehrere Zeilen hinzufüge und denselben Schlüssel verwenden muss, gibt es dafür eine kompaktere Methode? – 4thSpace

+0

Ja, Sie können die Schleife für die Speicherung von Daten einzeln verwenden. –

0

Eine kompaktere Art und Weise (und erweiterbar), dies zu tun wäre Ihre Namen-Daten in ein Array zu laden, und dadurch treten. Sie wollen nicht wirklich hartcodieren Variable1, Variable2 für Arrays beliebiger Länge

let employeeNames = ["John Doe", "Jane Doe", "Jack Daniels"] 

    for (index, employee) in employeeNames.enumerate() 
    { 
     let employeeEntry = NSEntityDescription.insertNewObjectForEntityForName("Employees", inManagedObjectContext: managedObject) 

     employeeEntry.setValue("John Doe", forKey: "employeename") 
     employees.setValue(index, forKey: "id") 

     do { 
      try managedObject.save() 
     } catch { 
      print("problem saving") 
     } 
    } 
Verwandte Themen