В моем Базовом приложении Данных я использую FetchedResultsController. Обычно для установки заголовков для заголовков в UITableView Вы реализовали бы следующий метод как так:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section];
return [sectionInfo name];
}
куда [sectionInfo имя] возвращает NSString.
мой sectionKeyPath основан на NSDate, и это все хорошо работает кроме заголовков раздела, которые он дает мне, необработанные строки описания даты (например, 12.12.2009 12:32:32 +0100), которые смотрят определенная путаница в заголовке!
Таким образом, я хочу использовать средство форматирования даты на этом для создания хорошего заголовка как "17 апреля 2010", но я не могу сделать этого с [sectionInfo имя], поскольку это - NSString! Какие-либо Идеи?
Большое спасибо
Я нашел решение:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
//Returns the title for each section header. Title is the Date.
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
NSArray *objects = [sectionInfo objects];
NSManagedObject *managedObject = [objects objectAtIndex:0];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateStyle:NSDateFormatterMediumStyle];
NSDate *headerDate = (NSDate *)[managedObject valueForKey:@"itemDate"];
NSString *headerTitle = [formatter stringFromDate:headerDate];
[formatter release];
return headerTitle;
}
Пожалуйста, просмотрите это, если вы знаете способ получше, скажите, пожалуйста!
В противном случае, если вы столкнетесь с подобной проблемой, надеюсь, это поможет!