如何在ios中对NSMutableArray中的时间进行排序 [英] how to sort the time in a NSMutableArray in ios
问题描述
我在 NSMutableArray 中有一组字典.现在我想对升序进行排序 &这里按时间降序是我的数组值.
i'm having a set of Dictionaries in a NSMutableArray. now i want to sort ascending & Descending order by time here is my Array value.
(
{
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 集通过下面的代码
Please help me i had sorted the set of NSDate inside the NSMutableArray by the below code
//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];
}
但我不知道如何在 NSMutableArray 中对字典进行排序帮助我.
but i don't know how to sort the Dictionary in the NSMutableArray help me.
推荐答案
最好使用 NSArray
中已经提供的排序方法.应该这样做:
It is best to use the sorting methods that are already provided in NSArray
. Something like this should do:
NSArray *stortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *_Nonnull obj1, NSDictionary *_Nonnull obj2) {
return [obj1[@"StartTime"] compare:obj2[@"StartTime"]];
}];
或者如果 StartTime
仍然是一个字符串:
Or if the StartTime
is still a string:
NSArray *stortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *_Nonnull obj1, NSDictionary *_Nonnull obj2) {
return [[dateFormatter dateFromString:obj1[@"StartTime"]] compare:[dateFormatter dateFromString:obj2[@"StartTime"]]];
}];
要更改升序/降序,只需在块中使用时交换 obj1
和 obj2
:
To change the ascending/descending order you simply swap the obj1
and obj2
when used in the block:
return [obj2[@"StartTime"] compare:obj1[@"StartTime"]];
这篇关于如何在ios中对NSMutableArray中的时间进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!