0

テーブルにいくつかのNSDateがあるとします。

  • 2012年1月11日
  • 2012年1月16日
  • 2012年2月14日
  • 2012年4月13日
  • 2012年4月14日
  • 2012年4月18日

これらの日付を月と年でグループ化して、次のようにします。

  • 2012年1月
  • 2012年2月
  • 2012年4月

私は現在、テーブル内のすべてのレコードをフェッチvalueForKeyPathし、日付列でを実行し、結果を抽出NSDateComponentsしてに保存することに頼っていNSSetます。これは少し非効率的なようです。

これらの日付をデータベース側でグループ化するNSPredicateを作成する方法があるかどうかを知りたいです。

4

1 に答える 1

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"];
}
于 2012-10-16T15:54:45.417 に答える