[英]Split nsarray into sections by NSDate
我有一個從核心數據中提取的NSArray
。 數組中的實體具有date
屬性(當然是NSDate
類型)。 我想做的是這樣的:
例如,如果我有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.