NSFetchedResultsController titleForHeaderInSection с отформатированным NSDate

В моем Базовом приложении Данных я использую 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! Какие-либо Идеи?

Большое спасибо

5
задан Daniel Granger 17 April 2010 в 21:15
поделиться

1 ответ

Я нашел решение:

- (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;
}

Пожалуйста, просмотрите это, если вы знаете способ получше, скажите, пожалуйста!

В противном случае, если вы столкнетесь с подобной проблемой, надеюсь, это поможет!

14
ответ дан 18 December 2019 в 11:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: