如何将来自Core Data,iOS dev的结果进行分组
我有一个名为“费用”的实体的核心数据,如:实体:“费用”属性:“date”,“类别”,“金额”……….
我的问题是,有可能在年份或年份中获取多less费用? 我知道如果提取基于时间段或类别,我可以使用NSPredicate来筛选提取的结果。 但是我脑海中的“Date”属性应该按年份和月份分开,所以我可以将它们分组在SQL查询中。 有没有可能直接在获取? 否则,唯一的办法是将整个数据提取到一个NSArray,并通过NSPredicate进行一些过滤。
我已经搜查了几天,但没有find直接的答案。 现在我确实相信没有直接的解决办法。 但我仍然认为,如果有人能提供给我更好的解决scheme,那么每个开发者都必须解决这个问题。
任何build议将不胜感激,谢谢你:)
============================新增===================== ==另外,就我所知的有关索引列表的技术而言,我想以UITableView为基础,以“Year-Month”为基础进行索引列表。 我可能会根据每个索引的“年 – 月”向每个arrays提供费用。 有没有更好的方法来做到这一点?
基于数据结构的思想是从实体(年)到多个实体( 年 ,月,年 – 月)到多个实体(年,月,日,金额等)build立一对多的关系。 。 也许这会给我带来一些便利,当我获取索引UITableView的每个数组。
您可以在Expense类中实现@readonly属性“year”和“month”,然后在谓词中使用它们。 您不必将这些值单独存储,只需使用NSDateComponents在getter中计算它们即可。
添加三个属性来将date组件存储在您的实体中(将date组件分隔为日,月和年,然后存储这三个条目),并且还具有用于存储完整date的date属性。 当你想要按年或者年 – 月取数据时只需要使用谓词。
NSPredicate *filter = [NSPredicate predicateWithFormat:@"month=%d AND year=%d",month,year]; [request setPredicate:filter]; NSArray *results = [self.moContext executeFetchRequest:request error:nil]; if(results.count > 0) { //do your manipulations. }