如何将多个值存储到CoreData中的一个属性中?

时间:2017-01-09 18:33:53

标签: arrays json swift core-data

我正在设计一个健康和健身应用程序,我正在设计一个运动数据库。我将所有练习都转换为JSON格式并将它们存储到与他们相关的肌肉群相关的多个阵列中。我为每个肌肉群创建了多个实体,然后在每个实体内部创建了一个名为“exercise”的属性。计划是将与肌肉群相关的锻炼存储到正确的实体中。我尝试使用for循环迭代数组并保存值。但是,它似乎只将每个数组中的一个值保存到属性中。

以下是我将用于尝试保存到CoreData的数组的示例...

let chestExercises = ["Bench Press", "Incline Press"]
let backExercises = ["Lat Pulldown", "Pullover"]

我使用CoreData执行此操作的原因是因为我希望我的用户能够编辑/删除数据库中的任何练习。

我真的很感激任何帮助,并对我正在采取的这种方法提出建议。谢谢

2 个答案:

答案 0 :(得分:3)

你在那里有一对多的关系,所以你应该创建另一个名为Exercise的实体,并给MuscleGroup一个1:M的关系,假设你没有多组练习。

实际上你可以让muscleGroup成为Exercise的一个属性。当你去选择一组练习时,只需给出一个过滤到所要求的肌肉群的谓词。 MuscleGroup可以是一个枚举,你存储一个整数,表示每个练习的枚举成员。

但正确的答案将依赖于您想要持久存储的所有数据,例如是否存在与MuscleGroup或Exercise相关联的其他属性。

答案 1 :(得分:0)

这是我将数组保存到CoreData的方法。

var exerciseName: String = ""
let chestExercises = ["Bench Press", "Incline Press"] as NSArray
let chestString = chestExercises.componentsJoined(by: ",")
exerciseName = chestString

然后我将exerciseName设置为CoreData中的String。