5

En mi aplicación Core Data, estoy usando FetchedResultsController. Por lo general, para establecer los títulos de los encabezados en un UITableView que pondría en práctica el método siguiente modo:NSFetchedResultsController titleForHeaderInSection con NSDate formateado

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
    id <NSFetchedResultsSectionInfo> sectionInfo = [[<#Fetched results controller#> sections] objectAtIndex:section]; 
    return [sectionInfo name]; 
} 

donde [nombre sectionInfo] devuelve un NSString.

my sectionKeyPath se basa en un NSDate y todo esto funciona bien aparte de los encabezados de sección que me da son las cadenas de descripción de fecha sin formato (por ejemplo 12/12/2009 12:32:32 +0100) que se ven un poco un desastre en un encabezado!

Así que quiero usar un formateador de fecha para hacer un buen encabezado como "17 de abril de 2010" pero no puedo hacer eso con el [nombre de sección de sección] ya que este es NSString! ¿Algunas ideas?

Muchas Gracias

+0

NSDateFormatter es bastante costoso de construir y ejecutar; Me gustaría hacer que una variable de instancia de su tabla de vista para que no esté construyendo cada vez que agarre un título de encabezado de sección. –

Respuesta

14

he encontrado una solución:

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

Por favor, mirar por encima de esto, si usted sabe de una mejor manera por favor decir!

De lo contrario, si tiene un problema similar, espero que esto ayude.

1

En iOS 4.0 y posterior, utilice el método de clase [NSDateFormatter localizedStringFromDate] y no tendrá que preocuparse por la gestión de la instancia de NSDateFormatter. De lo contrario, esta parece ser la única forma de hacerlo.

Cuestiones relacionadas