Подтвердить что ты не робот

Сортировка массива объектов по свойству NSDate

Возможный дубликат:
Как отсортировать NSMutableArray с пользовательскими объектами в нем?

Как сортировать массив объектов путем доступа к их свойствам NSDate?

Я знаю, что можно использовать [mutableArray sortUsingSelector:@selector(compare:)]; в массиве дат, но как это сделать, обратившись к свойству NSDate для каждого элемента массива, сортируя объекты по ранней дате до последней даты?

4b9b3361

Ответ 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:]. Он принимает блок, в котором вы можете реализовать любое сравнение, которое, по вашему мнению, подходит для ваших объектов.