如何从核心数据,iOS的开发组获取的结果(How to group fetched result f

2019-10-18 03:22发布

我有一个实体核心数据称为“费用”,其状如:实体:“费用”属性:“日期”,“类别”,“金额” ..........

我的问题是,是否有可能获取多少费用由一年或一年,一个月? 我知道,如果是基于时间段或类别的获取,我可以使用NSPredicate来筛选获取的结果。 但在我心中“日期”的属性应该按年份和月份进行分隔,所以我可以将它们作为SQL查询。 是否有可能做到这一点直接取? 否则,唯一的办法就是取整数据到的NSArray和NSPredicate做一些过滤器。

我已经搜索这几天却发现没有直接的答案。 现在,我居然有点相信没有直接的解决方案。 但我还是觉得想看看是否有人能提供我一些更好的解决方案怎么把每个人都必须已经解决了这个问题。

任何建议将不胜感激,谢谢你们:)

============================新增===================== ==此外,我想用“年 - 月”的基础是指数列于UITableView的,据我了解有关索引表技术的feteched结果。 我会根据每个索引“年 - 月”,提供每阵列费用。 有没有更好的方式来做到这一点?

我的基于数据结构的想法是建立一些一对多的关系,从实体(年),许多实体( ,月,年,月)对许多实体(年,月,日期,金额....) 。 也许当我取每个阵列对索引的UITableView这将给我带来一些方便。

Answer 1:

您可以实现消费类@ReadOnly属性“年”和“月”,然后在谓语使用它们。 你不必来存储这些值separatel,只是计算他们使用NSDateComponents干将。



Answer 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.
            }


文章来源: How to group fetched result from Core Data, iOS dev