Ios 按月份将NSDate对象为NSDictionary的NSArray排序
我正在构建一个Ios 按月份将NSDate对象为NSDictionary的NSArray排序,ios,objective-c,cocoa-touch,nsarray,nsdictionary,Ios,Objective C,Cocoa Touch,Nsarray,Nsdictionary,我正在构建一个UITableView,希望按月分组,以便将这些字符串作为我的节标题,例如: February 2013 - Item 1 - Item 2 January 2013 - Item 1 - Item 2 我有一个NSArray,它有一个自定义对象,其pubDate属性是NSDate 如何使用该NSDate对象按月将自定义对象分组到NSDictionary中?查看。如果将日期转换为日期组件: [[NSCalendar currentCalendar] components:(NS
UITableView
,希望按月分组,以便将这些字符串作为我的节标题,例如:
February 2013
- Item 1
- Item 2
January 2013
- Item 1
- Item 2
我有一个NSArray
,它有一个自定义对象,其pubDate属性是NSDate
如何使用该NSDate
对象按月将自定义对象分组到NSDictionary
中?查看。如果将日期转换为日期组件:
[[NSCalendar currentCalendar] components:(NSMonthCalendarUnit | NSYearCalendarUnit) fromDate:date]
然后,就可以很容易地比较对象是否相等了。像这样对数组进行排序
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
}
}
我想,这个问题缺少Ole Begemann的答案,但是这是一个链接(我无法发表评论
使用内置的数组排序例程,可以非常简单地对日期数组进行排序(如果它是纯NSDate对象)。然后“浏览”数组,并注意新月份开始的时间,添加相应的月份标题。否,数组中填充了自定义对象,其中一个属性为
NSDate
。然后需要通过几种数组排序方法之一描述日期的路径。只是稍微复杂一点。@NicHubbard你们得到答案了吗?我的要求和你一样。请让我知道如何才能达到像你的问题一样的结果?