在 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)
}
托管对象上下文充当暂存器,每次在其上创建对象时,它不会被保存,直到您显式地对其调用保存。如果你想添加多个项目,那么你需要创建它们,然后调用保存。
在您的代码中,您所做的只是更新您创建的对象,然后对其调用保存。您需要为每个要保存的项目创建一个对象。
我有一个数组,我想添加到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)
}
托管对象上下文充当暂存器,每次在其上创建对象时,它不会被保存,直到您显式地对其调用保存。如果你想添加多个项目,那么你需要创建它们,然后调用保存。
在您的代码中,您所做的只是更新您创建的对象,然后对其调用保存。您需要为每个要保存的项目创建一个对象。