【问题标题】:How do i store multiple values into one attribute in CoreData?如何将多个值存储到 CoreData 中的一个属性中?
【发布时间】:2017-01-09 18:33:52
【问题描述】:

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

这是我将用来尝试保存到 CoreData 的数组示例...

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

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

对于我正在采用的这种方法,我非常感谢任何帮助和建议。谢谢

【问题讨论】:

    标签: arrays json swift core-data


    【解决方案1】:

    您在那里有一对多的关系,因此您应该创建另一个名为“运动”的实体,并为 MuscleGroup 提供 1:M 的关系,假设您在多个组中没有任何运动。

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

    但正确的答案将取决于您想要持久存储的所有数据,例如是否有其他与 MuscleGroup 或运动相关的属性。

    【讨论】:

    • 嗯,我想在将来的某个时间为每个练习存储一个唯一的描述(字符串)和每个练习的图片(字符串)。感谢您的回复。
    • 所以是的,你真的不需要肌肉群实体吗?它可以只是一个属性,让您可以通过执行 select 语句来过滤练习。
    【解决方案2】:

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

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

    然后我在 CoreData 中将 exerciseName 设置为字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-28
      • 1970-01-01
      • 2018-11-04
      • 2012-12-19
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      相关资源
      最近更新 更多