问题描述
我有一个数组,我想添加到CoreData数据库中,我做了一个forEach遍历数组然后将数据保存在CoreData中,只保存一个值的问题,下面我写代码,有代码有问题吗?
class AquarisB: NSManagedobject,Identifiable {
@NSManaged public var nombre : String
}
struct Inici: View {
var body: some View {
var data : Array = [nombre: test1,nombre: test2]
var nuevoAcuari = Aquaris(context: self.contexto)
@Environment(\.managedobjectContext) var contexto
data.forEach { (temp) in
nuevoAcuari.nombre = temp.nombre
}
do {
try self.contexto.save()
} catch let error as NSError {
print("error al guardar",error.localizedDescription)
}
}
}
解决方法
正如我在评论中所说,您需要为数据数组中的每个项目创建一个新实体。这样的东西应该就足够了。
for nombre in data {
var nuevoAcuari = Aquaris(context: contexto)
nuevoAcuari.nombre = nombre
}
do {
try self.contexto.save()
} catch let error as NSError {
print("error al guardar",error.localizedDescription)
}
托管对象上下文充当便笺簿,每次在其上创建对象时,它都不会保存,直到您对其显式调用 save。如果要添加多个项目,则需要创建它们,然后调用保存。
在您的代码中,您所做的只是更新您创建的对象,然后对其调用 save。您需要为要保存的每个项目创建一个对象。