2010-05-14 2 views
0

J'ai travaillé sur un projet iphone et j'ai eu un problème. Actuellement Dans la vue tableau où il affiche tous les objets, j'utilise des en-têtes basés sur le champ datePerformed des objets. Le seul problème est que mon code crée apparemment un en-tête qui contient à la fois la date et l'heure, ce qui fait que les objets ne sont pas regroupés uniquement selon leur date, mais plutôt en fonction de leur date et heure. Je ne sais pas si c'est important, mais quand un objet est créé, j'utilise un sélecteur de date pour choisir la date, mais pas l'heure. Je me demandais si quelqu'un pouvait me donner des suggestions ou des conseils.Utilisation d'une date d'objet (sans heure) pour un en-tête de table au lieu d'un objet date et heure?

Voici le code où je mis le fetchedResultsController

- (NSFetchedResultsController *)fetchedResultsController { 

if (fetchedResultsController != nil) { 
    return fetchedResultsController; 
} 

// Create and configure a fetch request with the Exercise entity. 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Exercise" inManagedObjectContext:managedObjectContext]; 
[fetchRequest setEntity:entity]; 

// Create the sort descriptors array using date and name 
NSSortDescriptor *dateDescriptor = [[NSSortDescriptor alloc] initWithKey:@"datePerformed" ascending:NO]; 
NSSortDescriptor *nameDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES]; 
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:dateDescriptor, nameDescriptor, nil]; 
[fetchRequest setSortDescriptors:sortDescriptors]; 

// Create and initialize the fetch results controller 
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:@"datePerformed" cacheName:@"Root"]; 
self.fetchedResultsController = aFetchedResultsController; 
fetchedResultsController.delegate = self; 

// Memory management calls 
[aFetchedResultsController release]; 
[fetchRequest release]; 
[dateDescriptor release]; 
[nameDescriptor release]; 
[sortDescriptors release]; 

return fetchedResultsController; 
} 

est ici où je mis les propriétés d'en-tête de table:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 
// Display the exercise' date as section headings. 
return [[[fetchedResultsController sections] objectAtIndex:section] name]; 
} 

Toutes les suggestions sont les bienvenus.

+0

Clarification: Que voulez-vous dire par les devraient être juste des dates mais elles sont à la fois des données et du temps? Après tout, toutes les dates sont des moments. Voulez-vous dire que vous seulement quoi montrer la date mais pas l'heure dans l'en-tête? – TechZen

+0

http://imgur.com/RxB7N C'est actuellement ce à quoi il ressemble. Je le veux en-tête par date et non par date et heure. donc Auto Chea et BB Press doivent être regroupés sous 5-14-2010. Est-ce possible? – user341566

Répondre

0

Lorsque vous convertissez le NSDate en chaîne pour la table, il suffit de convertir la date et non l'heure. L'une de mes applications ne fait cette chose exacte pour les en-têtes de table, configurer la formatter date de cette façon (pas de style de temps):

self.dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; 

NSString* str = [dateFormatter stringFromDate:[NSDate date]];    

Vous pourriez avoir besoin d'ajouter cette ligne si vous utilisez un formatter qui a déjà set de style de temps:

[dateFormatter setTimeStyle:NSDateFormatterNoStyle]; 
+0

Je me suis dit que c'était ce que je devais faire, mais je suis nouveau pour récupérer des requêtes, donc je ne suis pas sûr de savoir comment le faire quand ou avant de faire datePerformed le sectonNameKeyPath. Aucune suggestion? – user341566

+0

On dirait que vous avez seulement une chaîne dans vos résultats récupérés, je supposais que vous travailliez à partir d'un NSDate. – progrmr

+0

Vous devrez excuser mon noobness, mais y at-il un moyen facile, je peux changer mon code pour tenir compte d'une date au lieu d'une chaîne, afin que je puisse résoudre mon problème? – user341566