我一直在研究iphone项目并遇到了一个问题。目前在表视图中显示所有对象,我使用基于对象datePerformed字段的标题。唯一的问题是我的代码显然创建了一个包含日期和时间的标题,导致对象不按照我的预期按日期分组,而是根据日期和时间进行分组。我不确定它是否重要,但是当创建一个对象时,我使用日期选择器来选择日期,而不是时间。我想知道是否有人可以给我任何建议或意见。
以下是我设置fetchedResultsController
的代码- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
// Create and configure a fetch request with the Exercise entity.
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Exercise" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
// Create the sort descriptors array using date and name
NSSortDescriptor *dateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"datePerformed" ascending:NO];
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:dateDescriptor, nameDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
// Create and initialize the fetch results controller
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"datePerformed" cacheName:@"Root"];
self.fetchedResultsController = aFetchedResultsController;
fetchedResultsController.delegate = self;
// Memory management calls
[aFetchedResultsController release];
[fetchRequest release];
[dateDescriptor release];
[nameDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
}
这是我设置表头属性的地方:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
// Display the exercise' date as section headings.
return [[[fetchedResultsController sections] objectAtIndex:section] name];
}
欢迎任何建议。
答案 0 :(得分:0)
将NSDate转换为表格的字符串时,只需转换日期而不是时间。我的一个应用程序对表头文件做了这个确切的事情,我用这种方式配置日期格式化程序(没有时间样式):
self.dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle];
NSString* str = [dateFormatter stringFromDate:[NSDate date]];
如果您使用的格式化程序已经设置了时间样式,则可能需要添加此行:
[dateFormatter setTimeStyle:NSDateFormatterNoStyle];