如何一次将多个关系保存到 CoreData?
How do I save multiple relationships to CoreData at once?
"Routine"与"Workout"是一对多的关系。两者都是 class NSManagedObject。我有一个名为 "myWorkouts" 的锻炼数组,我想在数组中的每个锻炼与例程之间建立关系。这是我的数据模型:
这是 "Routine" class 的属性代码:
extension Routine {
@NSManaged var name: String?
@NSManaged var workout: Set<Workout>?
}
这是我尝试创建关系的代码:
var myWorkouts = [Workout]()
for workout in myWorkouts {
routine!.workout = Set(arrayLiteral: workout)
}
我 运行 遇到的问题是,每次保存的锻炼都会覆盖最后一次保存的锻炼,因此,实际上,它只是将数组中的最后一次锻炼保存为关系例行公事。如何保存所有这些?
您每次循环都在覆盖关系集:
for workout in myWorkouts {
routine!.workout = Set(arrayLiteral: workout)
}
相当于下面每次覆盖workout中存储的值
routine!.workout = Set(arrayLiteral: a)
routine!.workout = Set(arrayLiteral: b)
routine!.workout = Set(arrayLiteral: c)
相反,您需要一次分配一个包含所有锻炼的集合:
routine!.workout = Set(myWorkouts)
"Routine"与"Workout"是一对多的关系。两者都是 class NSManagedObject。我有一个名为 "myWorkouts" 的锻炼数组,我想在数组中的每个锻炼与例程之间建立关系。这是我的数据模型:
这是 "Routine" class 的属性代码:
extension Routine {
@NSManaged var name: String?
@NSManaged var workout: Set<Workout>?
}
这是我尝试创建关系的代码:
var myWorkouts = [Workout]()
for workout in myWorkouts {
routine!.workout = Set(arrayLiteral: workout)
}
我 运行 遇到的问题是,每次保存的锻炼都会覆盖最后一次保存的锻炼,因此,实际上,它只是将数组中的最后一次锻炼保存为关系例行公事。如何保存所有这些?
您每次循环都在覆盖关系集:
for workout in myWorkouts { routine!.workout = Set(arrayLiteral: workout) }
相当于下面每次覆盖workout中存储的值
routine!.workout = Set(arrayLiteral: a)
routine!.workout = Set(arrayLiteral: b)
routine!.workout = Set(arrayLiteral: c)
相反,您需要一次分配一个包含所有锻炼的集合:
routine!.workout = Set(myWorkouts)