核心数据:根据创建的日期获取和分组不同的实体

时间:2013-11-28 18:12:30

标签: ios iphone xcode core-data

案例:
我正在使用具有2个不同实体NoteSleep的核心数据处理应用。在一天中,可能会多次添加这些实体的实例。

注意存储timestamp(日期),note(字符串)和一些其他不相关的属性。用于记录每日笔记。 睡眠存储timeStart(日期)和timeEnd(日期) - 用于跟踪用户的睡眠。

问题
我想获取两个实体Note + Sleep的所有条目,并按timestamptimeEnd分组;所以它可以显示在一个表视图中,每个日期都有一个单元格/行。

睡眠数据将用于计算睡眠总时数(例如,如果用户每天睡两次)

有些日子可能只有Notes和其他日子只能睡觉。

我该怎么做?我希望它有意义;否则请告诉我。

1 个答案:

答案 0 :(得分:2)

核心数据获取请求只能获取一个特定实体的对象(并且可选地) 子实体)。对于获取的结果控制器也是如此。

因此要显示 在表格视图中将NoteSleep个实体放在一起,您有以下选择:

  • 使用包含所有属性的单个实体,或
  • 使NoteSleep继承自公共父实体或
  • 使用Entry属性以及与timestampNote的一对一关系创建第三个实体Sleep

请注意,在第二种情况下,Core Data还会将所有对象存储在一个中 包含所有属性的表。

在任何一种情况下,您都可以对时间戳上的对象进行排序,或对它们进行分组 使用获取结果的sectionNameKeyPath参数进入部分 控制器。

唯一的选择是分别获取对象并合并它们,但随后 你失去了获取结果控制器的所有优点,比如自动控制器 改变跟踪。