我正在使用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')
”的内容?
答案 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"
(见上文)。