在 CoreData 中保存数组的值时,只保存一个值

when saving the values of an array in CoreData, only one value is saved

我有一个数组,我想添加到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)
}

托管对象上下文充当暂存器,每次在其上创建对象时,它不会被保存,直到您显式地对其调用保存。如果你想添加多个项目,那么你需要创建它们,然后调用保存。

在您的代码中,您所做的只是更新您创建的对象,然后对其调用保存。您需要为每个要保存的项目创建一个对象。