如何sorting在iOS中的NSMutableArray中的时间

我有一套NSMutableArray中的字典。 现在我想按时间升序sorting这里是我的数组值。

( { StartTime = "09:00 AM"; TravelsName = "ABC Travels"; }, { StartTime = "07:30 AM"; TravelsName = "XYZ Travels "; }, { StartTime = "06:45 PM"; TravelsName = "GSP Travels"; }, { StartTime = "05:00 PM"; TravelsName = "Madura Travels"; }, { StartTime = "12:45 AM"; TravelsName = "MJT Travels"; }, { StartTime = "12:45 PM"; TravelsName = "OPR Travels"; }, { StartTime = "01:00 AM"; TravelsName = "VMS Travels"; } ) 

请帮我,我通过下面的代码对NSMutableArray中的NSDate集进行了sorting

 //To sort the Time Array dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"hh:mm a"]; NSMutableArray *dates = [NSMutableArray arrayWithCapacity:times.count]; for (NSString *timeString in times) { NSDate *date = [dateFormatter dateFromString:timeString]; [dates addObject:date]; } [dates sortUsingSelector:@selector(compare:)]; NSMutableArray *sortedTimes = [NSMutableArray arrayWithCapacity:dates.count]; for (NSDate *date in dates) { NSString *timeString = [dateFormatter stringFromDate:date]; [sortedTimes addObject:timeString]; } 

但我不知道如何sorting字典在NSMutableArray帮助我。

最好使用已经在NSArray提供的sorting方法。 像这样的东西应该这样做:

 NSArray *stortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *_Nonnull obj1, NSDictionary *_Nonnull obj2) { return [obj1[@"StartTime"] compare:obj2[@"StartTime"]]; }]; 

或者如果StartTime仍然是一个string:

 NSArray *stortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *_Nonnull obj1, NSDictionary *_Nonnull obj2) { return [[dateFormatter dateFromString:obj1[@"StartTime"]] compare:[dateFormatter dateFromString:obj2[@"StartTime"]]]; }]; 

要更改升序/降序,只需在块中使用obj1obj2

 return [obj2[@"StartTime"] compare:obj1[@"StartTime"]];