如何一次将多个关系保存到 CoreData?
Posted
技术标签:
【中文标题】如何一次将多个关系保存到 CoreData?【英文标题】:How do I save multiple relationships to CoreData at once? 【发布时间】:2016-04-28 01:59:40 【问题描述】:“Routine”与“Workout”是一对多的关系。两者都属于 NSManagedObject 类。我有一个名为“myWorkouts”的锻炼数组,我想在数组中的每个锻炼和例程之间建立关系。这是我的数据模型:
下面是“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】:您每次通过循环都会覆盖一组关系:
for workout in myWorkouts routine!.workout = Set(arrayLiteral: workout)
这相当于每次覆盖锻炼中存储的值。
routine!.workout = Set(arrayLiteral: a)
routine!.workout = Set(arrayLiteral: b)
routine!.workout = Set(arrayLiteral: c)
相反,您需要分配一个同时包含所有锻炼的 Set:
routine!.workout = Set(myWorkouts)
【讨论】:
啊,我知道我哪里出错了。我也尝试过一次并且一直出错,这是因为我的代码是例行程序!.workout = Set(arrayLiteral:myWorkouts)。我现在觉得很傻,哈哈。感谢您的帮助! 因为你有一个反向关系,你也可以简单地设置每个routine
属性workout
和Core Data会为你做剩下的; workout.routine = routine!
以上是关于如何一次将多个关系保存到 CoreData?的主要内容,如果未能解决你的问题,请参考以下文章