【发布时间】:2014-07-03 12:16:42
【问题描述】:
我的 UITableView 中的每个部分标题都是一个日期。我可以很好地设置标题,但是,标题是按字母顺序排序的,而不是按日期排序的。所以,周一高于周六,周六高于周三。有没有办法按日期按时间顺序对标题进行排序?
这是我用来设置节标题的代码,其中entry.sectionName (type = string) 是我的模型实体中的一个属性,也用作我的 sectionNameKeyPath。
//set sectionName
NSDate *headerDate = [NSDate date];
NSDateFormatter *headerDateFormatter = [[NSDateFormatter alloc] init];
[headerDateFormatter setDateFormat:@"EEEE MMMM d, yyyy"];
NSString *headerDateString = [headerDateFormatter stringFromDate:headerDate];
entry.sectionName = headerDateString;
我假设 sectionName 属性需要是日期而不是字符串?这是正确的,如果是这样,代码是什么样的?我正在使用下面的代码将其改回 NSDate,但它似乎不起作用或显示任何数据。
//set sectionName
NSDate *headerDate = [NSDate date];
NSDateFormatter *headerDateFormatter = [[NSDateFormatter alloc] init];
[headerDateFormatter setDateFormat:@"EEEE MMMM d, yyyy"];
NSString *headerDateString = [headerDateFormatter stringFromDate:headerDate];
NSDateFormatter *inFormat = [[NSDateFormatter alloc] init];
[inFormat setDateFormat:@"MMM dd, yyyy"];
NSDate *parsed = [inFormat dateFromString:headerDateString];
entry.sectionName = parsed;
下面是获取结果控制器
-(NSFetchRequest *)entryListFetchRequest{
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"BreastEntry"];
[fetchRequest setSortDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"sectionName" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"timePicker" ascending:NO]]];
return fetchRequest;
}
-(NSFetchedResultsController *)fetchedResultsController{
if(_fetchedResultsController != nil){
return _fetchedResultsController;
}
CoreDataStack *coreDataStack =[CoreDataStack defaultStack];
NSFetchRequest *fetchRequest = [self entryListFetchRequest];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:coreDataStack.managedObjectContext sectionNameKeyPath:@"sectionName" cacheName:nil];
_fetchedResultsController.delegate = self;
return _fetchedResultsController;
}
titleForSectionInHeader 方法
-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
id<NSFetchedResultsSectionInfo> sectionInfo = [self.fetchedResultsController sections][section];
return [sectionInfo name];
}
【问题讨论】:
-
在 UITableView 中使用数据之前,您的数据通常应该按照正确的顺序排列。您能否在对“条目”对象进行排序时添加代码?
-
@AlexVogel 查看 FRC 的更新问题
标签: ios uitableview nsdate