iPhone CoreData:如何按天分组获取的结果?

时间:2010-06-14 13:48:17

标签: iphone date core-data group-by

我正在使用CoreData开发iPhone应用程序。我的一个实体有一个名为'time'的NSDate属性。它存储时间到分钟/秒。作为我的部分,我想要有一天的日期。因此,如果有条目'2010-06-14 8:00'和'2010-06-14 11:00',我希望它们被分组为'2010-06-14'。

目前我只使用@“time”作为我的sectionNameKeyPath:

NSFetchedResultsController *aFetchedResultsController =
    [[NSFetchedResultsController alloc]
    initWithFetchRequest:fetchRequest
    managedObjectContext:managedObjectContext
    sectionNameKeyPath:@"time"
    cacheName:@"Root"];

到今天是否有分组技巧?或者我是否必须使用纯SQL和类似“GROUP BY date(time, '%Y-%m-%d')”的内容?

1 个答案:

答案 0 :(得分:15)

解决这个问题:

将方法- (NSString *)day;添加到我的Entity类,其实现如下:

- (NSString *)day {
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
    dateFormatter.dateStyle = NSDateFormatterFullStyle;

    return [dateFormatter stringFromDate:self.time];
}

然后我在@"day"的初始化中使用sectionNameKeyPath作为aFetchedResultsController而不是@"time"(见上文)。