【问题标题】:Need a direction to design Coredata model需要一个方向来设计Coredata模型
【发布时间】:2012-01-25 16:30:12
【问题描述】:

我有一个关于 coredata 的一些基础设计的问题,以使其成为我的应用程序的未来证明!

在这种情况下,让我们考虑开发一个核心数据模型来跟踪身体质量指数 (BMI),这只是一个示例,它将被列在一个名为:Category 的实体中。

类别具有以下属性:

  • NSString(String)标题(重量)
  • NSNumber(float) upperMax (100) *
  • NSNumber(float) lowerMax (40) *

*注意:这些上限和下限完全是假设的,完全没有科学依据,我只是以它为例!咳咳。

另一个实体:“跟踪器”

  • NSDate 时间戳
  • NSNumber 条目

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

到这里为止,一切都很好理解。用户输入带有时间戳的跟踪器并输入值(当前记录的重量),应用程序然后比较它是否高于或低于或介于(正常)类别中的预设值。

如果我添加另一个类别 - 体重指数 (BMI)。 BMI 将体重与身高进行比较。

我可以轻松地将它们添加为实体中的新类别:

  • 姓名BMI
  • UpperMax 23.5
  • Lo​​werMax 18.5

并且用户将添加比较两者的曲目条目。

但我希望能够添加体重和身高,而不是它自己的 BMI 指数,这会创建一个场景,用户将在两个文本字段中输入值。

最明显的答案是在类别中添加另一个名为“身高”的条目,但随后我必须创建一个新条目以将其与 BMI 相关联。

相反,我想知道一种新的方法来设计类别实体,以便用户可以指定条目值。 例如。 (“重量”中的重量)=所需的文本字段输入为 ONE 例2。 (“BMI”中的体重和身高)= 所需的文本字段输入是两个。

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

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

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

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

然后,当我点击“跟踪增长的新条目”时,应根据 Category.fields(关系)的计数出现两个文本字段。

这是正确的方法吗?以及我应该如何将“类别”实体与“条目”实体连接起来。我在中间某处得到了“字段”实体

【问题讨论】:

  • 如果我理解正确,您正在尝试权衡您是否应该使用明确定义的核心数据字段(实体)与创建一个通过表中的行定义字段的表?如果是这种情况,我会根据您计划添加或更改字段定义的次数来回答。行更容易添加、修改和删除,但可能更难使用。实际字段更明确,可能更易于使用。
  • 我希望能够在运行时在应用程序中添加“自定义”类别。就像在创建“新”类别时一样,我将使用 tableView 中的“添加”按钮将名称和添加字段添加到类别中。在 BMI 中,我将添加两个字段名称:1-Weight UpperMax/LowerMax 等 2-Height 等。然后当我点击“跟踪增长的新条目”时,应根据 Category.fields 的计数出现两个文本字段(关系)。这是正确的方法吗?以及我应该如何将“类别”实体与“条目”实体连接起来。我在中间的某个地方得到了“字段”实体。
  • 是的,您所描述的听起来是正确的方法。要在运行时添加自定义类别,只需向类别表中添加行。要链接它们,请在类别表和条目表之间创建关系实体。然后,您拥有的每个条目对象都将具有关联的类别。每个类别对象都会有一个条目数组。这有意义吗?
  • 嗯,这是有道理的,但挑战是弄清楚该条目与相关类别的关系,或者我称之为“字段”。应该是一对一的吗?每个条目只能有一个字段。就像一个权重条目只能有一个权重字段类型......我添加一个这样的条目,这将如何表现重复行为......嗯......如果“字段”有>一个与条目的多对多关系。字段>条目。我快到了……还没有……

标签: iphone objective-c core-data


【解决方案1】:

您是否查看过 Apple 关于 CoreData 的文档?他们有很好的例子让初学者开始使用 CoreData。

我建议您访问以下链接:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html#//apple_ref/doc/uid/TP40001075

【讨论】:

    猜你喜欢
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多