4

在我的项目中,我从 a 获取一些数据,然后通过解析将APi数据检索到 a中。它有一个名为“ StartDate ”的键,其格式为:“ ”,如下所示NSMutableArrayJSONmm/dd/yyyy hh:mm:ss

StartDate: "5/18/2013 12:00:00 AM"

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

{
    EventId: "xxxx",
    Title: "xxx",
    Location: "xxxx",
    StartDate: "5/18/2013 12:00:00 AM",
    Link: null
}

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

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"StartDate" ascending:TRUE];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

但是我得到了一个打乱的结果,整个排序都不正确,谁能告诉我我哪里出错了。

谢谢

4

2 回答 2

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];
}];
于 2013-01-14T13:20:56.553 回答
3

您的 StartDate 似乎是字符串格式,我相信它会将其改组为字符串。您应该先转换为 NSDate,然后再应用此描述符...希望这会有所帮助。

于 2013-01-14T12:01:00.293 回答