5

Dans mon application Données de base, j'utilise un FetchedResultsController. En général, pour définir les titres pour les en-têtes dans un UITableView vous mettrait en œuvre la méthode suivante comme ceci:NSFetchedResultsController titleForHeaderInSection avec format NSDate

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

où [nom sectionInfo] retourne un NSString. Mon sectionKeyPath est basé sur un NSDate et tout cela fonctionne bien en dehors des en-têtes de section qu'il me donne sont les chaînes de description brutes de date (par exemple 12/12/2009 12:32:32 +0100) qui regardent un peu de un désordre dans une entête! Donc je veux utiliser un formateur de date sur ceci pour faire un joli entête comme "Apr 17 2010" mais je ne peux pas le faire avec le [nom de sectionInfo] comme ceci est NSString! Des idées?

Merci beaucoup

+0

Le NSDateFormatter est assez cher à construire et à exécuter; J'en ferais une variable d'instance de votre tableview de sorte que vous ne la construisiez pas chaque fois que vous récupérez un titre d'en-tête de section. –

Répondre

14

je trouve une solution:

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

S'il vous plaît regarder par-dessus cela, si vous connaissez une meilleure façon! S'il vous plaît dire

Sinon, si vous êtes coincé avec un problème similaire, j'espère que cela aide!

1

Sous iOS 4.0 et versions ultérieures, utilisez la méthode de classe [NSDateFormatter localiséeStringFromDate] et vous n'aurez pas à vous soucier de la gestion de l'instance NSDateFormatter. Sinon, cela semble être la seule façon de le faire.

Questions connexes