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

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

Итак, это довольно простой вопрос относительно наилучшего способа сортировки NSMutableArray пользовательских объектов.

У меня есть NSMutableArray пользовательских объектов, каждый объект с NSString и NSDate, которые идут вместе. Мне нужно отсортировать массив по самому новому объекту (таким образом, последнему NSDate), и я уверен, что могу просто использовать NSDate compare: NSDate, если это был массив только NSDate, но поскольку мне нужны все объекты сортировка, а не только дата, я не уверен, могу ли я использовать этот метод.

В терминах псевдокода мне нужно: посмотреть на отдельный объект, определить, является ли текущий объект NSDate следующим самым большим в массиве, а если он есть, переместите объект, а не только дату.

Опять же, это то, о чем я даже не решался спросить, так как это так просто, но я не хочу писать какой-то крайне неэффективный метод, если есть уже существующий метод класса, который будет по существу делать то, что я хочу, искать массив свойств объекта и сортировать объекты в соответствии с под-свойствами.

Спасибо за любую помощь.

4b9b3361

Ответ 1

NSSortDescriptors делают это очень простым. С помощью NSMutableArray вы можете отсортировать существующий массив с помощью sortUsingDescriptors: и с неизменяемыми массивами вы создаете новый массив, используя sortedArrayUsingDescriptors:

//This will sort by stringProperty ascending, then dateProperty ascending
[mutable_array sortUsingDescriptors:
 @[
  [NSSortDescriptor sortDescriptorWithKey:@"stringProperty" ascending:YES],
  [NSSortDescriptor sortDescriptorWithKey:@"dateProperty" ascending:YES]
  ]];

Ответ 2

Этот маленький фрагмент отлично работал у меня:

[students sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]];