Je rencontre des difficultés pour extraire les résultats des données de base triées par date.Récupération à partir des données de base triées par date formatée
J'ai une table DB qui contient des matchs de football. Chaque match a un homeTeam, un awayTeam et un kickoffTime. KickoffTime est un NSDate qui stocke la date et l'heure du début du match.
Je souhaite afficher les résultats d'une requête dans un TableView divisé en sections par la date de début. Avec la date comme en-tête de section.
Ceci est un peu plus complexe qu'il n'y paraît. En raison des fuseaux horaires différents, une correspondance commençant à une date dans une partie du monde commence réellement à une date différente dans une autre partie du monde. Donc, je ne peux pas simplement ignorer les temps et stocker les dates du coup d'envoi dans une autre colonne. Ce que j'essaie de faire créer un accesseur personnalisé qui renvoie une date formatée, quel que soit le fuseau horaire de l'utilisateur, puis l'utiliser pour trier et sectionner les résultats. Voici mon code dans Match.h:
@dynamic kickoffTime;
@dynamic formattedKickoffTime;
@dynamic dateFormatter;
- (NSString *)formattedKickoffTime
{
[self willAccessValueForKey:@"kickoffTime"];
// Set the date formatter to the format we want to display the date
[dateFormatter setDateFormat:@"ccc, d MMM"];
// Format the date
NSString *myFormattedKickoffTime = [dateFormatter stringFromDate:[self kickoffTime]];
[self didAccessValueForKey:@"kickoffTime"];
// return the formatted date
return myFormattedKickoffTime;
}
- (NSDateFormatter *)dateFormatter
{
if (dateFormatter == nil)
{
dateFormatter = [[NSDateFormatter alloc] init];
}
return dateFormatter;
}
@end
Cependant lorsque je tente de chercher et trier les données comme ceci:
NSSortDescriptor *kickoffDescriptor = [[NSSortDescriptor alloc] initWithKey:@"formattedKickoffTime" ascending:YES];
...
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:appDelegate.managedObjectContext sectionNameKeyPath:@"formattedKickoffTime" cacheName:nil];
je reçois le message d'erreur suivant:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath formattedKickoffTime not found in entity <NSSQLEntity Match id=1>'
Would Quelqu'un offre des conseils s'il vous plaît?