2009-12-02 7 views
0

Je joue avec l'exemple de code source coredatabooks sur le site Web d'Apple, ou here. J'essaye de placer la valeur d'attribut de livre de copyright pour remplacer l'auteur comme entête de section de table, et j'ai besoin que la valeur de date soit statique, signifiant que je n'ai pas besoin du temps, sinon toutes les valeurs de date sont différentes , et pas deux objets livres avec le même mois jour et année date de diffusion des droits d'auteur sous la même date parce que la partie de temps de la valeur de date change ...NSDateFormatter: Je ne veux pas le temps!

Voici le code de mon fichier RootViewController.m qui formate le valeur de date datepicker pour l'affichage dans l'en-tête de section:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
NSString *rawDateStr = [[[fetchedResultsController sections] objectAtIndex:section] name]; 

//convert default date string to NSDate... 
NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease]; 
[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss ZZ"]; 
NSDate *date = [formatter dateFromString:rawDateStr]; 

//convert NSDate to format we want... 
[formatter setDateFormat:@"EEEE MMMM d"]; 
NSString *formattedDateStr = [formatter stringFromDate:date]; 

return formattedDateStr; 

}

Cela produit très bien, mais il ne me permet pas de grouper des livres avec le même jour et année de copyright dans la même section parce que, encore une fois (je suppose), la valeur de date a aussi le temps. L'économie réelle de la valeur de la date de la datepicker se fait dans le fichier EditingViewController.m comme suit:

- (IBAction)save { 

// Pass current value to the edited object, then pop. 
if (editingDate) { 
    [editedObject setValue:datePicker.date forKey:editedFieldKey]; 
} 

La méthode d'enregistrement prend actuellement la date-est de la datepicker, alors comment puis-je modifier ce code pour copiez d'abord la date de la datepicker dans une variable locale et effacez le temps dedans, puis utilisez cette valeur dans l'instruction setValue pour qu'elle soit correctement regroupée? S'IL VOUS PLAÎT AIDE! Merci

+0

Il semble que cette question devrait être fermée en double ou comme n'étant plus pertinente. –

Répondre

2

Depuis la date de soi comprennent le temps, vous allez devoir modifier lui-même l'objet NSDate en le convertissant en ses NSDateComponent s, occultant la HH:mm:ss, puis convertir ces composants remontent dans un NSDate.

Par exemple:

NSDate * aDate = [NSDate date]; 
NSDateComponents * components = [[NSCalendar currentCalendar] components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) fromDate:aDate]; 
NSDate * convertedDate = [[NSCalendar currentCalendar] dateFromComponents:components]; 

Si vous faites cela, vous perdrez des choses comme décalage horaire, vous voudrez peut-être prendre en considération les effets secondaires de cela. La bonne chose à propos de cette méthode est qu'elle fonctionne quelle que soit la façon dont la chaîne est formatée (ce qui est une chose fragile sur laquelle s'appuyer).

Questions connexes