У меня есть массив словарей, в каждом словаре содержится один параметр даты. Массив параметров даты (содержится в словарях) выглядит следующим образом:
[@"16-1-2015 7:00PM",@"15-1-2014 11:30AM",@"14-1-2014 7:00PM",
@"15-1-2015 6:30AM ".@"16-1-2015 8:30PM"]
Мне нужен вывод вроде:
[@"16-1-2015 8:30PM",@"16-1-2015 7:00PM",@"15-1-2015 6:30AM ",
@"15-1-2014 11:30AM",@"14-1-2014 7:00PM"];
2 ответа
Вы можете попробовать это:
NSArray *dateStringArray = @[ @"16-1-2015 7:00PM", @"15-1-2014 11:30AM", @"14-1-2014 7:00PM", @"15-1-2015 6:30AM ", @"16-1-2015 8:30PM" ];
- (NSArray *)sortDateStringArray:(NSArray *)dateStringArray
{
NSDateFormatter *dateFormater = [[NSDateFormatter alloc] init];
[dateFormater setDateFormat:@"dd-MM-yyyy h:mma"];
NSArray *sortedArray = [dateStringArray sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSDate *date1 = [dateFormater dateFromString:obj1];
NSDate *date2 = [dateFormater dateFromString:obj2];
return [date2 compare:date1];
}];
return sortedArray;
}
Я думаю, что лучше преобразовать вашу dateString в NSDate, а затем сравнить
Надеюсь, это поможет!!!
return [date2 compare:date1];
Также обратите внимание, что создание NSDateFormatter
является дорогостоящей операцией, как минимум, она должна быть поднята за пределы блока.
Сохраните даты как объекты NSDate
в NSMutableArray
, затем используйте -[NSArray sortedArrayUsingSelector:] or -[NSMutableArray sortUsingSelector:]
и передайте @selector(compare:)
в качестве параметра. Метод -[NSDate compare:]
упорядочит даты в порядке возрастания. Это проще, чем создавать NSSortDescriptor
, и гораздо проще, чем писать собственную функцию сравнения. (Объекты NSDate
знают, как сравнивать себя друг с другом, по крайней мере, так же эффективно, как мы могли бы надеяться достичь с помощью пользовательского кода.)
Или же
Если у меня есть NSMutableArray
объектов с полем beginDate типа NSDate
, я использую NSSortDescriptor
, как показано ниже:
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"beginDate" ascending:TRUE];
[myMutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[sortDescriptor release];
Посетите этот вопрос: здесь
Похожие вопросы
Связанные вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.