如何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"]]]; }];
要更改升序/降序,只需在块中使用obj1
和obj2
:
return [obj2[@"StartTime"] compare:obj1[@"StartTime"]];