将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/