gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 23:59:04 26 4
gpt4 key购买 nike

我有以下代码可以无误地执行。问题是它只保存最后一个条目(“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")
}

最佳答案

swift 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.
}

关于ios - 如何在 CoreData 中保存多个条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com