繁体   English   中英

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

[英]Sort NSArray with NSDate object into NSDictionary by month

我正在构建一个UITableView并希望按月分组,以便我可以将这些字符串作为我的节标题,例如:

February 2013
- Item 1
- Item 2

January 2013
- Item 1
- Item 2

我有一个NSArray ,它有自定义对象,其pubDate属性是NSDate

如何使用该NSDate对象按月将自定义对象分组为NSDictionary

像这样排序数组

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 如果您将日期转换为日期组件:

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

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

我想,这个问题没有得到Ole Begemann的答案,但这是一个链接(我无法发表评论<repo)我正在回答这个问题,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM