Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Сортировка Objective-C

0

Существует несколько способов сортировки массива, но самый распространенный способ основан на использовании массива дескрипторов сортировки. Класс NSМutаblеАrrау содержит следующий метод:

-­‐      (void)sortUsingDescriptors:(NSArray     *)sortDescriptors;

Аргумент содержит массив объектов NSSortDescriptor. Дескриптор сортировки содержит имя свойства объектов, содержащихся в массиве, и признак направления сортировки (по возрастанию или убыванию). Зачем передавать массив дескрипторов сортировки? Представьте, что вам потребовалось от- сортировать список клиентов по фамилиям в порядке возрастания. А если у двух клиентов окажутся одинаковые фамилии? Тогда приходится использовать более сложный критерий сортировки, например:. Отсортировать по фамилиям в порядке возрастания;

если фамилии совпадают – то по именам в порядке возрастания, а если совпадают и

имена, и фамилии – то по почтовым индексам».

Рис. 21.1. Сортировка осуществляется сначала по lastName, затем по firstName и по zipCode

Свойство, по которому осуществляется сортировка, может быть любой переменной экземпляра или результатом выполнения любого метода объекта. Вернемся к проекту ВМITimе и посмотрим, как сортировка работает на практике. В

функции main(), непосредственно перед выводом массива employees, отсортируем его по значению valueOfAssets. Если за двумя работниками закреплены ресурсы равной стоимости, вторичная сортировка осуществляется по значению employeeID. Внесите изменения в файл main.m:

}

NSSortDescriptor *voa = [NSSortDescriptor

sortDescriptorWithKey:@"valueOfAssets"

NSSortDescriptor *ei = [NSSortDescriptor sortDescriptorWithKey:@"employeeID"

ascending:YES];

ascending:YES];

[employees sortUsingDescriptors:[NSArray arrayWithObjects:voa, ei, nil]];

NSLog(@"Employees: %@", employees);

Постройте и запустите программу Вы увидите, что список работников сортируется в правильном порядке:

Employees: (

"<Employee 0: $0 in assets>", "<Employee 4: $0 in assets>", "<Employee 8: $0 in assets>", "<Employee 7: $34 in assets>", "<Employee 3: $68 in assets>", "<Employee 2: $119 in assets>", "<Employee 6: $119 in assets>", "<Employee 5: $136 in assets>", "<Employee 9: $136 in assets>", "<Employee 1: $153 in assets>"

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии