Trier NSArray avec l'object NSDate dans NSDictionary par mois

Je construis un UITableView et voudrais regrouper par mois afin que je puisse avoir ces strings comme en-têtes de section, par exemple:

 February 2013 - Item 1 - Item 2 January 2013 - Item 1 - Item 2 

J'ai un NSArray qui a des objects personnalisés qui ont une propriété pubDate qui est un NSDate .

Comment puis-je utiliser cet object NSDate pour regrouper mes objects personnalisés dans un NSDictionary par mois?

Trier un tableau comme celui-ci

 NSArray *sortedArray = [yourArrayOfCustomObjects sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSDate *firstDate = [(YourCustomObject*)obj1 pubDate]; NSDate *secondDate = [(YourCustomObject*)obj2 pubDate]; return [firstDate compare:secondDate]; }]; 

// Maintenant une itération simple et vous pouvez déterminer toutes les inputs du même mois.

// Le code n'est pas complet uniquement à des fins d'illustration.

// Vous devez également gérer le changement d'année.

 int curMonth = 0; int prevMonth = 0; foreach(CustomObject *obj in sortedArray) { NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:obj.pubDate]; prevMonth = curMonth; curMonth = components.month; if(prevMonth != 0 && curMonth != prevMonth) { //Month Changed } } 

Jetez un oeil à NSDateComponents . Si vous convertissez vos composants date à date:

 [[NSCalendar currentCalendar] components:(NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:date] 

alors vous aurez des objects que vous pourrez facilement comparer pour l'égalité.

Je pense, cette question manquait la réponse d'Ole Begemann, cependant ceci est un lien (et je ne suis pas en mesure de postr un commentaire <repo) Je donne une réponse à cette question,

Si quelqu'un cherche toujours une solution élégante, vérifiez ceci,

http://oleb.net/blog/2011/12/tutorial-how-to-sort-and-group-uitableview-by-date/