Сортировка массива объектов по свойству NSDate
Возможный дубликат:
Как отсортировать NSMutableArray с пользовательскими объектами в нем?
Как сортировать массив объектов путем доступа к их свойствам NSDate?
Я знаю, что можно использовать [mutableArray sortUsingSelector:@selector(compare:)];
в массиве дат, но как это сделать, обратившись к свойству NSDate для каждого элемента массива, сортируя объекты по ранней дате до последней даты?
Ответы
Ответ 1
Спасибо за все ответы, я наткнулся на этот ответ, который решил мою проблему. Отметьте ответ NSGod
Вот код пользователя: NSGod:
NSSortDescriptor *dateDescriptor = [NSSortDescriptor
sortDescriptorWithKey:@"startDateTime"
ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:dateDescriptor];
NSArray *sortedEventArray = [nodeEventArray
sortedArrayUsingDescriptors:sortDescriptors];
Ответ 2
NSSortDescriptor* sortByDate = [NSSortDescriptor sortDescriptorWithKey:@"nsdatepropertyname" ascending:YES];
[mutableArray sortUsingDescriptors:[NSArray arrayWithObject:sortByDate]];
Ответ 3
Вы можете использовать:
NSArray *sortedArray = [mutableArray sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSDate *first = [(Person*)a birthDate];
NSDate *second = [(Person*)b birthDate];
return [first compare:second];
}];
Или см. ссылку
Ответ 4
Вы можете переопределить метод сравнения в своем пользовательском классе, чтобы он сравнивал два объекта вашего пользовательского класса и возвращал соответствующий NSComparisonResult в соответствии с датами на объектах.
Например:
-(NSComparisonResult)compare:(YourClass*)otherObject
{
return [self.date compare:otherObject.date];
}
Ответ 5
Существует метод под названием -[NSArray sortedArrayUsingComparator:]
. Он принимает блок, в котором вы можете реализовать любое сравнение, которое, по вашему мнению, подходит для ваших объектов.