Ios 带块的排序数组不返回正确的结果

Ios 带块的排序数组不返回正确的结果,ios,objective-c,Ios,Objective C,所以我有一个字符串数组(monthsArray),看起来像这样: months array before :( "November 2012", "January 2013", "September 2013", "December 2012", "August 2013" ) 我用这个来分类: NSDateFormatter * formatter=[[NSDateFormatter alloc]init]; [formatter setDateFormat:@"MMMM YYYY"];

所以我有一个字符串数组(monthsArray),看起来像这样:

months array before :(
"November 2012",
"January 2013",
"September 2013",
"December 2012",
"August 2013"
)
我用这个来分类:

NSDateFormatter * formatter=[[NSDateFormatter alloc]init];
[formatter setDateFormat:@"MMMM YYYY"];

monthsArray = [NSMutableArray arrayWithArray:[tempMonthsArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {

    NSTimeInterval firstTime=[[formatter dateFromString:(NSString*)a]timeIntervalSince1970];
    NSTimeInterval secondTime=[[formatter dateFromString:(NSString*)b]timeIntervalSince1970];

    return [[NSNumber numberWithDouble:firstTime]compare:[NSNumber numberWithDouble:secondTime]];
    }]];
在我对其进行排序后,它看起来如下所示:

months array after :(
"November 2012",
"December 2012",
"January 2013",
"September 2013",
"August 2013"
)

正如您在“排序”前后数组中看到的,它们排列不正确。为什么不呢?我个人看不出代码有任何错误。

看起来格式不正确。试试这个

[formatter setDateFormat:@"MMMM yyyy"];
@“YYYY”是基于周的日历年

@“yyyy”是普通日历年


有关更多说明,请参阅

年的日期格式为
yyy
(小写)。
dateFromString:(NSString*)a
应为
dateFromString:a
。类型
id
是Objective-C.id的
void*
。id是指向与此问题无关的任何对象的通用指针,但您可以将该块声明为
NSComparisonResult(NSString*a,NSString*b)
。很高兴知道,以备将来参考Yea..我在Martin R的响应中看到了它。太好了!希望有帮助