Сортировка свойства NSMutableArray по объекту
Итак, это довольно простой вопрос относительно наилучшего способа сортировки NSMutableArray
пользовательских объектов.
У меня есть NSMutableArray
пользовательских объектов, каждый объект с NSString
и NSDate
, которые идут вместе. Мне нужно отсортировать массив по самому новому объекту (таким образом, последнему NSDate
), и я уверен, что могу просто использовать NSDate compare: NSDate
, если это был массив только NSDate
, но поскольку мне нужны все объекты сортировка, а не только дата, я не уверен, могу ли я использовать этот метод.
В терминах псевдокода мне нужно: посмотреть на отдельный объект, определить, является ли текущий объект NSDate
следующим самым большим в массиве, а если он есть, переместите объект, а не только дату.
Опять же, это то, о чем я даже не решался спросить, так как это так просто, но я не хочу писать какой-то крайне неэффективный метод, если есть уже существующий метод класса, который будет по существу делать то, что я хочу, искать массив свойств объекта и сортировать объекты в соответствии с под-свойствами.
Спасибо за любую помощь.
Ответы
Ответ 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]]];