如何一次将多个关系保存到 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)