将NSArray与NSDate对象按月分类到NSDictionary中

我正在构build一个UITableView并希望按月分组,以便我可以将这些string作为我的部分标题,例如:

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

我有一个NSArray具有一个NSDate pubDate属性的自定义对象。

我如何使用NSDate对象按月将我的自定义对象分组到一个NSDictionary

像这样sorting数组

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

//现在做一个简单的迭代,你可以确定所有相同的月份条目。

//代码不完整仅用于说明目的。

//你还必须处理年份更改。

 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 } } 

看看NSDateComponents 。 如果您将date转换为date组件:

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

那么你会有对象,你可以很容易地比较平等。

我认为,这个问题是从奥列贝格曼错过的答案,但是这是一个链接(我不能发表评论<回购)我给这个问题的答案,

如果有人仍然在寻找一些优雅的解决scheme,请检查一下,

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