首页 文章

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

提问于
浏览
0

“常规”与“锻炼”有一对多的关系 . 两者都是NSManagedObject类 . 我有一系列名为“myWorkouts”的训练,我想在阵列中的每个训练和例程之间 Build 关系 . 这是我的数据模型:

enter image description here

以下是“Routine”类属性的代码:

extension Routine {
    @NSManaged var name: String?
    @NSManaged var workout: Set<Workout>?
}

这是我正在尝试创建关系的代码:

var myWorkouts = [Workout]()

for workout in myWorkouts {
    routine!.workout = Set(arrayLiteral: workout)
}

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

1 回答

  • 1

    您每次通过循环覆盖一组关系:

    在myWorkouts中锻炼{
    例程!.workout = Set(arrayLiteral:workout)
    }

    这相当于以下每次都会覆盖锻炼中存储的值 .

    routine!.workout = Set(arrayLiteral: a)
    routine!.workout = Set(arrayLiteral: b)
    routine!.workout = Set(arrayLiteral: c)
    

    相反,您需要一次分配包含所有锻炼的Set:

    routine!.workout = Set(myWorkouts)
    

相关问题