Iphone 将核心数据中的天数聚合为周

Iphone 将核心数据中的天数聚合为周,iphone,objective-c,ios,core-data,aggregate,Iphone,Objective C,Ios,Core Data,Aggregate,有人对我面临的这个问题有什么建议吗。这并不复杂,但可能有一种更干净的方法在核心数据中实现 我有一个带有日期和值的数据表或托管对象。我通常显示每天的数据和每天的值 我想将其分组为几周,因此将有一周的所有行聚合为某个数字 示例:我的数据当前显示如下 8月5日| 5 8月4日18日 8月3日至8日 8月2日至3日 8月1日至10日 7月31日| 2 7月30日| 1 7月29日| 7 7月28日6日 等等 我想这样显示它: 第24周| 47 第23周| 13 第22周| 20 等等 我已经在使用NSF

有人对我面临的这个问题有什么建议吗。这并不复杂,但可能有一种更干净的方法在核心数据中实现

我有一个带有日期和值的数据表或托管对象。我通常显示每天的数据和每天的值

我想将其分组为几周,因此将有一周的所有行聚合为某个数字

示例:我的数据当前显示如下

8月5日| 5 8月4日18日 8月3日至8日 8月2日至3日 8月1日至10日 7月31日| 2 7月30日| 1 7月29日| 7 7月28日6日 等等

我想这样显示它:

第24周| 47 第23周| 13 第22周| 20 等等

我已经在使用NSFetchedResultsController,如果可能的话,我想继续使用它。我认为这就是困难所在。如果我只是展示一个UITableView和一个NSArray数据,这将很容易将我的值相加并展示数据

然而,NSFetchedResultsController显然与获取结果有关,所以我想我想使用获取来聚合这些数据,这样我就可以像处理原始数据一样将其直接挂接到表视图中

有什么建议吗


谢谢

亲爱的,这真是件大事。想想用户可能有很多不同的日历。但是,自1970年以来,该日期仍以秒为单位保存为时间戳。您可以尝试使用coreDataDate%86400*7//每天计算7秒*7天。
通过模运算,它将自动分组七天。但请记住,有许多情况需要预先考虑,例如某些国家的冬季/夏季时间变化。

前言:CoreData中没有表格


如果修改数据模型以提供派生属性,则它可以位于自定义子类中,而不需要对定义周的数据模型进行建模。也许是一年中的一周。然后,您将希望按周和年对这些部分进行分组。

我将研究创建一种方法,该方法使用NSCalendar和NSDateComponents的组合来查找属于一周的天数,然后使用NSPredicate和BEVERY语句提取该周的天数。如果日期是NSDate格式,这将更容易,但如果不是,则可以轻松转换


当我不得不把一周中的所有时间都从核心数据存储中取出,用于一个时间卡应用程序时,我使用了非常类似的方法。

我这样做了,但有点难看。但它是有效的,我需要让它快速工作

因为我想继续使用我的FetchedResultsController,以及我为将其连接到视图控制器而创建的所有体系结构,所以在我的几周和几个月内使用不同的实体似乎更容易

我知道存储可以计算的数据违背了数据存储的原则,但这相对容易做到

我有我的UsageDay托管对象,它是大多数数据。然后我有一个UsageWeek和UsageMonth对象

当我存储UsageDay对象时,从其日期ivar开始,我计算UsageWeek和UsageMonth的weekOfYear和MonthHofYear和year

UsageWeek包含:weekOfYear、year和它包含的UsageDay对象的NSSet UsageMonth包含:monthOfYear、year和它包含的UsageDay对象的NSSet

然后,我可以很容易地得到所有UsageWeek对象的列表,其中有一组7个UsageDay对象,我在其中调用[UsageWeek valueForKeyPath:@usageDaySet.@sum.value],这将给出我的总数。很好


欢迎公开批评这个设计-我期待它

你真的不想在日期上做任何算术运算,这就是NSDate和NSDate想要从你身上抽象出来的东西。签出+currentCalendar和-components:fromDate:。亲爱的,我唯一需要处理的日历是我在应用程序中支持的语言。我不是在这里写框架。日历将为您处理边缘情况,如果这很重要,闰年,夏令时,等等。是的,我几周前看了“日历”wwdc 2011视频。了解了很多日历api提供的功能…建议观看,尤其是在搜索代码后出现86400时!没有表-你说得对-除了它由数据库sqllite支持-其中有表,它使用UITableView显示-这显然是一个表。所以从概念上讲,核心数据中没有表格,但实际上,它是表格数据。我不想特别地把它分成几个部分,但是数据是聚合的,我会用一个例子来编辑我的文章。为了进一步澄清,你希望一个表视图单元格包含一周的信息,并且你的数据每天都保存?这是正确的。通常1个单元格是1天,但我希望1个单元格包含1周。我不拥有数据,这是我检索数据的方式——因此,我除了在检索数据后进行操作之外,无法控制它。是的,我正在使用这些。看看我自己的答案。但我似乎做得很笨拙。