如何一次将多个关系保存到CoreData?

时间:2016-04-28 01:59:41

标签: ios swift core-data nsmanagedobject

"程序"与"锻炼"有一对多的关系。两者都是NSManagedObject类。我有一系列训练叫做#34; myWorkouts"我想在数组中的每个训练和例程之间创建一个关系。这是我的数据模型:

enter image description here

以下是" 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)
}

我遇到的问题是,每次保存的锻炼都会覆盖保存的最后一项锻炼,因此,实际上,它只保存阵列中最后一次锻炼作为关系常规。如何保存所有这些?

1 个答案:

答案 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)