2012-01-25 19 views
0

我有一个关于coredata的基础设计的问题,使它成为我的应用程序的未来证明!需要一个方向来设计Coredata模型

继承人的情况下,让我们考虑IM开发coredata模型来跟踪身体质量指数(BMI),这仅仅是一个例子,它会在一个名为实体列出:分类。

类别具有以下属性:

  • 的NSString(字符串)标题(重量)
  • 的NSNumber(浮点)upperMax(100)*
  • 的NSNumber(浮点)lowerMax(40)*

*注意:这些上限和下限是完全假设的,根本没有科学依据,我只是用它来举例!啊哈..

另一个实体: “跟踪器”

  • 的NSDate的timeStamp
  • 的NSNumber进入

一对多的关系存在这里 - Category<--->>Tracker

在这里上升,一切都很好理解。用户输入插入追踪器timeStamp并输入值(当前记录的重量),然后应用程序比较它的高于或低于或在(正常)类别中的预设值之间。

如果我添加另一个类别 - 身体质量指数(BMI)。体重指数比较体重和身高。

我可以很容易地在实体将其添加为新的cateogry为:

  • 名称BMI
  • UpperMax 23.5
  • LowerMax 18.5

和用户将添加一个比较Track项他们俩。

但我希望能够增加体重和身高,而不是BMI指数它的自我,这创造了一个方案,其中用户将输入值两个文本框。

最明显的答案是添加在所谓的“高度”范畴另一个项目,但后来我不得不创建一个新的以涉及与BMI。

相反,我想知道一种新的方法来设计类的实体,使得Entry值可以由用户指定。 例如。 (“重量”中的权重)=所需的文本框输入是一个 eg2。 (“BMI”中的体重和身高)=所需的文本字段输入为TWO。

也许我应该创建一个新的实体?名称为“字段”并存储类别,并在此新实体中指定所需字段的正常值数量。

它现在很模糊,希望你能明白我在问什么。

从用户角度来看: 我希望能够在运行时本身在应用中添加“自定义”类别。就像创建一个“新”类别一样,我将使用tableView中的“添加”按钮将名称和添加字段添加到类别中。

在BMI,我将添加两个字段名称: 1重量UpperMax/LowerMax等 2,身高等。

然后当我点击“新Entrys跟踪增长”两个文本框应该出现基于Category.fields(关系)的计数。

这是正确的做法吗?以及我应该如何将“类别”实体与“Entry”实体连接起来。我在中间某个地方得到了“Fields”实体

+1

如果我理解正确的,你正试图权衡是否应使用明确规定coredata字段(实体)与创建一个表,你的选择你通过表中的行定义你的字段?如果是这种情况,我会根据您计划添加或更改字段定义的次数来回答。行更容易添加,修改和删除,但可能有点难以处理。实际字段更加明确,可能更容易处理。 – Brain2000

+0

我希望能够在运行时本身在应用程序中添加“自定义”类别。就像创建一个“新”类别一样,我将使用tableView中的“添加”按钮将名称和添加字段添加到类别中。 在BMI,我将添加两个字段名称: 1重量UpperMax/LowerMax等 2,身高等。 后来,当我点击“新Entrys跟踪增长”两个文本框应该出现基于计数Category.fields(关系)。 这是正确的方法吗?以及我应该如何将“类别”实体与“Entry”实体连接起来。我在中间某处找到了“Fields”实体。 – user134611

+0

是的,你所描述的听起来像是正确的路要走。要在运行时添加自定义类别,只需将行添加到类别表中。要链接它们,请在类别和条目表之间创建一个关系实体。然后,您拥有的每个条目对象都将具有关联的类别。每个类别对象都有一个条目数组。那有意义吗? – Brain2000

回答