1

我有一个NSArray从核心数据中提取的。数组中的实体有一个date属性(当然是类型NSDate)。我想做的是:

  • 数组需要显示在表格视图中,
  • 数组中对象的部分及其标题是months

例如,如果我有 3 个对象(4 月 1 日、4 月 3 日和 7 月 7 日),则应该有 2 个部分:- 2012 年 4 月(2 个 obj)- 2012 年 7 月(1 个 obj))。

如何像这样拆分数组?

4

1 回答 1

1

尝试使用 aNSFetchedResultsController和 custom sectionNameKeyPath,它应该是您的NSManagedObject子类中的一个方法。

fetchedResultsController 可以设置如下:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"MyObject"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
request.sortDescriptors = @[sortDescriptor];
NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:managedObjectContext sectionNameKeyPath:@"monthAsString" cacheName:nil];

您需要monthAsString在 managedObject 子类中实现该方法。只分配一次 NSDateFormatter,因为如果为每次调用分配一个新实例,它的性能将不会很好。

 - (NSString *)monthAsString {
    static NSDateFormatter *formatter;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        formatter = [[NSDateFormatter alloc] init];
        formatter.dateFormat = @"MMMM yyyy";
    });

    NSString *dateString = [formatter stringFromDate:self.date];
    return dateString;
 }
于 2012-10-20T20:33:11.583 回答