使用NSSortDescriptor在NSMutableArray中对NSDate对象进行排序?

D_D*_*D_D 4 iphone objective-c nsdate nssortdescriptor ios

在我的项目中,我从a获取了一些数据,APiNSMutableArray通过解析数据将数据转换为a JSON.它有一个名为" StartDate " 的密钥,其格式为:" mm/dd/yyyy hh:mm:ss",如下所示

StartDate: "5/18/2013 12:00:00 AM"
Run Code Online (Sandbox Code Playgroud)

我正在将这些数据保存到resultArray.还有一个对象的4个键,因为我JSON的形式

{
    EventId: "xxxx",
    Title: "xxx",
    Location: "xxxx",
    StartDate: "5/18/2013 12:00:00 AM",
    Link: null
}
Run Code Online (Sandbox Code Playgroud)

这里有多个这样的对象.我需要做的就是对resultArray基于日期(升序或降序)的内容进行排序,我使用下面的代码

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"StartDate" ascending:TRUE];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
Run Code Online (Sandbox Code Playgroud)

但是我得到了一个洗牌的结果,整个排序并不正确,任何人都可以告诉我我出错的地方.

谢谢

Ant*_*ich 6

应该管用

[resultArray sortUsingComparator:^NSComparisonResult(id a, id b) {

    static NSDateFormatter *dateFormatter = nil;

    if (!dateFormatter) {
        dateFormatter = [[NSDateFormatter alloc] init];
        dateFormatter.dateFormat = @"mm/dd/yyyy hh:mm:ss"; 
    }

    NSString *date1String = [a valueForKey:@"StartDate"];
    NSString *date2String = [b valueForKey:@"StartDate"];

    NSDate *date1 = [dateFormatter dateFromString:date1String];
    NSDate *date2 = [dateFormatter dateFromString:date2String];

    return [date1 compare:date2];
}];
Run Code Online (Sandbox Code Playgroud)