2016-03-23 12 views
0

エラーなしで実行する次のコードがあります。問題は最後のエントリ( "Jack Daniels"、3)のみを保存することです。これを変更して3つのエントリをすべて保存するにはどうすればよいですか?配列にあなたの名前のデータをロードし、それをステップすることですこれを行うにはCoreDataに複数のエントリを保存する方法は?

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

同じオブジェクトの値を変更しています。したがって、最後に入力したデータだけが保存されます。異なるオブジェクトを作成して値を設定する必要があります。 –

答えて

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

ありがとうございます。複数の行を追加して同じキーを使用する必要があるため、これを行うためのよりコンパクトな方法がありますか? – 4thSpace

+0

はい、データを1つずつ保存するためにループを使用できます。 –

0

よりコンパクトな方法(および拡張可能)。任意の長さの配列に対して、variable1、variable2をハードコーディングしたくはありません。

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") 
     } 
    } 
関連する問題