J'ai le code suivant:Objective-C: [nom sectionInfo] de NSFetchedResultsSectionInfo doit être dateFormatted
Je suis besoin essentiellement pour convertir le titleforheaderinsection qui est une date de chaîne comme « 2009-12-04 00:00:00 +1100 "pour une plus belle chaîne plus courte. J'ai donc essayé de le convertir en utilisant quelque chose comme dateFormatter setDateStyle, mais quand j'ai sorti le NSLog en console, j'ai obtenu ce qui suit:
2009-12-22 09: 42: 10.156 app [94614: 207] sectionNom 2009-12- 04 00:00:00 +1100 2009-12-22 09: 42: 10.157 app [94614: 207] convDate (null
De toute évidence, convDate n'obtient rien, mais [sectionInfo name] doit être une chaîne. Je l'ai analysé dans sa propre variable NSString, alors pourquoi je ne peux pas mettre en œuvre la DateFormatter sur elle
Un peu plus d'informations: la date que je parse parmi ot ses choses plus tôt, avec l'extrait de code être:
if ([currentElement isEqualToString: @"date"]) {
NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init] ;
[dateFormatter setDateFormat:@"eee, dd MMM yyyy"];
NSDate *convDate = [dateFormatter dateFromString:string];
if (self.isComment){
[currentComment setDate: convDate];
}else if (self.isPost)
NSLog(@"convDate is %@", convDate);
[currentPost setDate: convDate];
Maintenant, quand je le débugger, essentiellement la chaîne brute est « Sam, 27 novembre 2009 17:16:00 -800 » mais quand je regarde la convDate il sort pour être "2009-11-27 00:00:00 +1100". Je ne sais pas pourquoi, mais en tout cas, c'est ce qui est stocké. J'aurais pensé que cela correspondrait au style que j'ai mentionné, donc si je change le format de dateFormatter à n'importe quel autre type, il se bourrerait et convDate deviendrait nul.
En regardant ma PostController: J'ai quelques extraits d'intérêt:
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController == nil) {
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Post" inManagedObjectContext: ApplicationController.sharedInstance.managedObjectContext]];
NSArray *sortDescriptors = nil;
NSString *sectionNameKeyPath = @"date";
NSPredicate *pred = [NSPredicate predicateWithFormat:[NSString stringWithFormat:@"(PostSite.name like '%@')", self.site.name]];
[fetchRequest setPredicate:pred];
sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc]
initWithKey:@"date" ascending:NO] ];
[fetchRequest setSortDescriptors:sortDescriptors];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:
ApplicationController.sharedInstance.managedObjectContext
sectionNameKeyPath:sectionNameKeyPath cacheName:@"PostCache"];
}
return fetchedResultsController;
}
J'espère trier par date, et dans mon code, en titleForHeaderInSection, formatez ma date de chaîne avoir l'air plus présentable.
Merci les gars
Cela signifie que 'dateFromString' ne renvoie pas de date ou' stringFromDate' ne renvoie pas de chaîne. Vous pouvez suivre ce qui se passe et suivre la source de l'erreur. Je suppose que le problème est la valeur renvoyée par [nomInfo section]. –
J'ai réalisé que c'est parce que le style de date est faux. Vous devez définir le style de date sur long et appeler dateFromString, puis définir le style de date sur medium et appeler stringFromDate. –
OK Oliver, ive fait ceci: .. [dateFormatter setDateStyle: NSDateFormatterLongStyle]; ... NSDate * convStringDate = [dateFormatter dateFromString: [nomInfo section]]; \t [dateFormatter setDateStyle: NSDateFormatterMediumStyle]; ... NSString * convDateString = [dateFormatter stringFromDate: convStringDate]; -im toujours ne rien récupérer. Je sais que certain [nom de sectioninfo] renvoie du texte. J'ai également NSLogged convStringDate pour une date longue et toujours il retourne null – Doz