【问题标题】:How to Structure Core Data Entity如何构建核心数据实体
【发布时间】:2011-07-24 03:46:31
【问题描述】:

我想为锻炼例程制作一个实体。

我将实体命名为“常规”。用户会收到带有文本提示的 UIAlert 提示,以输入每一天的名称(例如 1)胸部日、2)背部日、3)腿部日等)。在这些日子的每一天中,都会列出他们选择当天要做的练习。

我现在将所有练习都存储在 .plist 中的字典中。

我需要帮助构建例程的属性等。

我正在考虑为 Day 设置一个属性(他们在其中命名这一天),然后这就是我被卡住的地方。我假设使用字典或数组来保存当天的练习,但这不能在 Core Data 中完成。

【问题讨论】:

  • 如果您可以发布数据样本,将会很有帮助。

标签: iphone objective-c core-data


【解决方案1】:

不要从字典或数组的角度思考,而要从对象的角度思考。您正在考虑放入 dict/array 的东西是作为一天例行程序的一部分进行的实际练习,对吗?所以你需要一个内部名称; “锻炼”并没有真正起作用,因为那是对您所做的事情的描述,而不是对所做的事情的描述,而“代表”只是其中之一。 编辑:你使用了“Set”这个词,这很有意义,所以我也将使用它。

因此您的数据模型可能如下所示:

Day <----->> Set

其中&lt; 是“对一”关系,&gt;&gt; 是“对多”关系。通过了解一个对象与另一个对象的多个副本有关系,这就是您有效获取数组和字典的方式。

【讨论】:

  • 感谢 Matt,这是有道理的,我将开始将我的数据视为对象。然而,这需要一些时间来适应。让我感到困惑的是,用户将根据他们的表现在每次练习中输入不同数量的组/代表等。那么我应该为设置、代表、锻炼和例程设置单独的实体吗?还是我需要进一步分解它。
  • 代表只是集合的一部分,对吧,仅仅是计数?一组可能是 10 次,另一组是 20 次,取决于练习?因为它只是一个计数,所以没有理由让它成为一个对象,它可以是一个 Set 实例的属性。请记住,每个对象的定义都具有与其他对象的属性和关系,但是对象的每个 instance 都有其自己的特定属性值和特定关系。因此,Exercise 的一个实例可能有 3 个相关的 Set(每个都有一个属性值和代表次数),而另一个实例有 5 个相关的 Set。
  • 感谢马特,所以如果我设置一个实体,我可以为“设置”和“重量”设置属性。所以一组可能有“rep = 5”和“weight = 200lb”。我的问题是,每组都针对特定的锻炼类型。像卧推一样会有4套不同的套路。所以练习将是一个与集合有一对多关系的不同实体?
  • @Faisal 我认为您的意思是“代表”和“重量”,是的,这是有道理的。是的,Exercise 是一个类别,所以它是它自己的对象(就像它是数据库中的查找表一样)。它可能只有一个属性,即它的名称,但它也可能有其他属性,例如描述。
  • @Faisal 我要提防的一件事是,商店中的物品必须与现实世界完美匹配。实际上,它们应该与它们的实际使用相关:当第一次这样做时,人们有时会创建过于复杂的数据结构。例如,“Rep”对象将是多余的,因为它没有属性或方法。如果你发现你对一个对象所做的只是计算它,那么它可能不需要是一个实际的对象。 (不过,如果你对它进行求和或平均,它会存储某种类型的值,因此很可能存在。)到目前为止,你做得很好。
猜你喜欢
  • 2017-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多