"程序"与"锻炼"有一对多的关系。两者都是NSManagedObject类。我有一系列训练叫做#34; 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)
}
我遇到的问题是,每次保存的锻炼都会覆盖保存的最后一项锻炼,因此,实际上,它只保存阵列中最后一次锻炼作为关系常规。如何保存所有这些?
答案 0 :(得分:1)
每次循环都会覆盖这组关系:
for workout in myWorkouts { routine!.workout = Set(arrayLiteral: workout) }
这相当于以下每次都会覆盖锻炼中存储的值。
routine!.workout = Set(arrayLiteral: a)
routine!.workout = Set(arrayLiteral: b)
routine!.workout = Set(arrayLiteral: c)
相反,您需要一次分配一个包含所有锻炼的集合:
routine!.workout = Set(myWorkouts)