有没有人对我面临的这个问题有任何提示。它并不复杂,但在Core Data中可能有更简洁的方法。
我有一个包含日期和值的数据表(或托管对象)。我通常会显示每天的数据以及每天的价值。
我想在几周内对此进行分组,因此汇总所有具有一定数量周的行。
示例:我的数据目前显示如下
等等
我想像这样显示它:
等等
我已经在使用NSFetchedResultsController了,如果可能的话,我想继续使用它。我认为这就是困难所在。如果我只是展示一个UITableView和一个NSArray数据,那么就可以很容易地添加我的值并显示数据。
然而,NSFetchedResultsController似乎与获取结果有关(显然),所以我想我想使用fetch聚合这些数据,这样我就可以像处理原始数据一样将它挂钩到我的表视图中。
有什么建议吗?
由于
答案 0 :(得分:0)
coreDataDate % (86400*7) // seconds per day * 7 days
进行计算
通过以模数计算,它将自动分组七天。但请记住,有许多案例需要预先考虑,例如某些国家的冬季/夏季时间变化。
答案 1 :(得分:0)
(前言:CoreData中没有“表格”)
如果修改数据模型以提供派生属性(它可以在自定义子类中,而不需要建模),则定义周。也许是weekOfYear
。然后,您希望按周和年对这些部分进行分组。
答案 2 :(得分:0)
我将研究创建一个方法,该方法使用NSCalendar和NSDateComponents的组合来查找属于一周的日期,然后使用NSPredicate和BETWEEN语句拉出该周的日期。如果日期是NSDate格式,这将更容易,但如果没有,您可以轻松转换。
当我不得不将一周的所有日子从Core Data商店中抽出时间卡应用程序时,我使用了非常相似的东西。
答案 3 :(得分:0)
我这样做了,但有点丑陋。但它有效,我需要让它快速运作......
因为我想继续使用我的FetchedResultsController,以及我创建的所有架构将它连接到我的视图控制器,所以在我的周和月中使用不同的实体似乎更容易。
我知道这可以通过存储可以计算的数据来违背数据存储原则,但这样做相对容易。
我有UsageDay托管对象,这是大多数数据。然后我有一个UsageWeek和UsageMonth对象。
当我存储UsageDay对象时,从其日期ivar开始,我计算UsageWeek和UsageMonth的weekOfYear和monthOfYear(和year)。
UsageWeek包含:weekOfYear,year和它包含的UsageDay对象的NSSet UsageMonth包含:monthOfYear,year和它包含的UsageDay对象的NSSet。
然后,我可以轻松获得所有UsageWeek的列表,其中包含一组7个UsageDay对象 - 我在其上调用[usageWeek valueForKeyPath:@“usageDaySet。@ sum.value”] - 这给出了我的总数。工作正常。
随意公开批评这个设计 - 我期待它!!!