5

Nella mia app Core Data sto utilizzando un FetchedResultsController. Di solito per impostare i titoli per le intestazioni in un UITableView si implementa il metodo seguente modo:NSFetchedResultsController titleForHeaderInSection con NSDate formattato

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

dove [nome sectionInfo] restituisce un NSString.

my sectionKeyPath è basato su un NSDate e tutto funziona benissimo a parte le intestazioni di sezione che mi dà sono le stringhe di descrizione data scaduta (ad esempio 12/12/2009 12:32:32 +0100) che sembrano un po ' un pasticcio in un colpo di testa!

Quindi voglio usare un formattatore di date su questo per fare una bella intestazione come "17 apr 2010", ma non posso farlo con [nomeInfo sezione] come questo è NSString! Qualche idea?

Molte grazie

+0

NSDateFormatter è piuttosto costoso da compilare ed eseguire; Lo renderei una variabile di istanza del tuo tableview in modo da non costruirlo ogni volta che prendi un titolo di intestazione di sezione. –

risposta

14

ho trovato una soluzione:

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

Si prega di guardare oltre questo, se siete a conoscenza di un modo migliore si prega di dire!

Altrimenti se sei bloccato con un problema simile spero che questo aiuti!

1

In iOS 4.0 e versioni successive, utilizzare il metodo di classe [NSDateFormatter localizedStringFromDate] e non sarà necessario preoccuparsi della gestione dell'istanza NSDateFormatter. Altrimenti questo sembra essere l'unico modo per farlo.

Problemi correlati