假设我在表中有一些NSDate:
我想按月和按年分组这些日期,以便我得到:
我目前要求获取表格中的每条记录,在日期列上执行valueForKeyPath
,提取NSDateComponents
并将结果存储在NSSet
中。这似乎有点低效。
我想知道是否有办法编写NSPredicate,将这些日期分组到数据库端。
答案 0 :(得分:2)
我做了类似的事情,并在名为sortDate
的实体中使用了额外的属性。
我从自定义日期设置器中设置了sortDate。
这样的事情:
- (NSDate *)monthDateFromDate:(NSDate *)date {
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [calendar components:NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date];
NSDate *monthDate = [calendar dateFromComponents:components];
return monthDate;
}
- (void)setDate:(NSDate *)date {
[self willChangeValueForKey:@"date"];
[self setPrimitiveStartDate:date];
[self didChangeValueForKey:@"date"];
NSDate *sortDate = [self monthDateFromDate:date];
[self willChangeValueForKey:@"sortDate"];
[self setPrimitiveSortDate:sortDate];
[self didChangeValueForKey:@"sortDate"];
}