簡體   English   中英

通過NSDate將nsarray分成多個部分

[英]Split nsarray into sections by NSDate

我有一個從核心數據中提取的NSArray 數組中的實體具有date屬性(當然是NSDate類型)。 我想做的是這樣的:

  • 該陣列需要顯示在表格視圖中,
  • 數組中對象的部分及其標題為months

例如,如果我有3個對象(4月1日,4月3日和7月7日),則應該有2個部分:-2012年4月(2個對象)-2012年7月(1個對象))。

我該如何拆分數組?

嘗試使用NSFetchedResultsController和一個自定義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];

您需要在managedObject子類中實現monthAsString方法。 只能分配一次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;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM