案例:
我正在使用具有2个不同实体Note
和Sleep
的核心数据处理应用。在一天中,可能会多次添加这些实体的实例。
注意存储timestamp
(日期),note
(字符串)和一些其他不相关的属性。用于记录每日笔记。
睡眠存储timeStart
(日期)和timeEnd
(日期) - 用于跟踪用户的睡眠。
问题
我想获取两个实体Note
+ Sleep
的所有条目,并按timestamp
和timeEnd
分组;所以它可以显示在一个表视图中,每个日期都有一个单元格/行。
睡眠数据将用于计算睡眠总时数(例如,如果用户每天睡两次)
有些日子可能只有Notes和其他日子只能睡觉。
我该怎么做?我希望它有意义;否则请告诉我。
答案 0 :(得分:2)
核心数据获取请求只能获取一个特定实体的对象(并且可选地) 子实体)。对于获取的结果控制器也是如此。
因此要显示
在表格视图中将Note
和Sleep
个实体放在一起,您有以下选择:
Note
和Sleep
继承自公共父实体或Entry
属性以及与timestamp
和Note
的一对一关系创建第三个实体Sleep
。请注意,在第二种情况下,Core Data还会将所有对象存储在一个中 包含所有属性的表。
在任何一种情况下,您都可以对时间戳上的对象进行排序,或对它们进行分组
使用获取结果的sectionNameKeyPath
参数进入部分
控制器。
唯一的选择是分别获取对象并合并它们,但随后 你失去了获取结果控制器的所有优点,比如自动控制器 改变跟踪。