我有一个名为“Expense”的实体的核心数据,它像: 实体:“费用” 属性:“日期”,“类别”,“金额”..........
我的问题是,是否可以按年份或年份获取多少费用? 我知道如果获取是基于时间段或类别,我可以使用NSPredicate来过滤获取的结果。但是我脑海中的“Date”属性应该按年和月分开,所以我可以像在SQL查询中一样对它们进行分组。是否可以直接在fetch中执行此操作?否则,唯一的方法是将整个数据提取到NSArray并通过NSPredicate执行一些过滤。
我已搜索了好几天,但没有找到直接答案。现在我真的有点相信没有直接的解决方案。但我仍然认为想要查看是否有人可以为我提供更好的解决方案,因为每个开发人员都必须解决这个问题。
任何建议都将不胜感激,谢谢你们:)
============================添加================== ===== 此外,据我所知,关于索引列表的技术,我希望以“年月”为基础的步骤在UITableView中列出索引。根据每个索引的“年月”,我可能会为每个数组提供费用。有没有更好的方法呢?
我基于数据结构的想法是建立一些多对多的关系,从实体(年)到多个实体(年,月,年 - 月)到多个实体(年 - 月,日,金额......)。当我为索引的UITableView获取每个数组时,这可能会给我带来一些便利。
答案 0 :(得分:2)
添加另外三个属性以存储实体中的日期组件 (将日期组件分为日,月和年,然后存储这三个条目),并且还有一个日期属性来存储完整日期。 当您想要按年或年月获取数据时,只需使用谓词。
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.
}
答案 1 :(得分:2)
您可以在Expense类中实现@readonly属性“year”和“month”,然后在谓词中使用它们。您不必单独存储这些值,只需使用NSDateComponents在getter中计算它们。