如何在CoreData中保存多个条目?

4th*_*ace 7 core-data ios swift

我有以下代码可以正确执行。问题是它只保存最后一个条目(“Jack Daniels”,3)。如何更改它以保存所有三个条目?

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")
}
Run Code Online (Sandbox Code Playgroud)

Gur*_*ngh 7

斯威夫特 4.1。您不需要将保存代码放入 for 循环中。只需插入所有输入,然后一次性保存它们。

 let appDelegate = UIApplication.shared.delegate as! AppDelegate
    let context = appDelegate.persistentContainer.viewContext
    let entity = NSEntityDescription.entity(forEntityName: "Employees", in: context)

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

    for (index, employee) in employeeNames.enumerated() {
      let newUser = NSManagedObject(entity: entity!, insertInto: context)
      newUser.setValue(employee, forKey: "employeename")
      newUser.setValue(index, forKey: "id")
    }

    do {
      try context.save()
    } catch {
      print("Failed saving")
    }

 // Alternative You can create your Entity class as below and insert entries.

    import CoreData
    class Employees: NSManagedObject {
      @NSManaged var employeename: String
      @NSManaged var id: String

      func addNameAndId(name: String = "", id: String = "") throws {
        if name.count > 0 {
          self.employeename = name
          self.id = id
        } else  {
          throw NSError(domain: "", code: 100, userInfo: nil)
        }
      }
    }

    // Now time to insert data

    let employeeNames = ["John Doe", "Jane Doe", "Jack Daniels"]
     for name in employeeNames {
        guard let emp = NSEntityDescription.insertNewObject(forEntityName: "Employees", into: context) as? Employees else {
                  print("Error: Failed to create a new Film object!")
                  return
                }
                do {
                  try emp.addNameAndId(name: name, id: "0")
                } catch {
                  print("Error: \(error)\nThe quake object will be deleted.")
                  context.delete(emp)
                }
        }

    // Save all the changes just made and reset the taskContext to free the cache.
          if context.hasChanges {
            do {
                 try context.save()
              } catch {
                  print("Error: \(error)\nCould not save Core Data context.")
               }
               context.reset() // Reset the context to clean up the cache and low the memory footprint.
           }
Run Code Online (Sandbox Code Playgroud)


Yag*_*iya 5

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")
}
Run Code Online (Sandbox Code Playgroud)