Если вы хотите, чтобы отсортировать на основе имени, в алфавитном порядке, то это было бы самым простым способом:
Создать метод MyObject
, который вы будете использовать для сортировки объектов. compare:
- это общее название метода для такого рода ситуаций. Он должен принять аргумент того же типа, что и класс, и вернуть NSComparisonResult
. Например:
-(NSComparisonResult)compare:(MyObject*)obj;
Поскольку мы хотим, чтобы сравнить эти объекты, основанные на собственности таким же образом, что объекты типа этого свойства уже в сравнении, мы можем просто вернуть результат этого сравнения:
-(NSComparisonResult)compare:(MyObject*)obj {
return [self.name compare:obj.name];
}
Теперь, когда этот метод находится в месте, это так просто, как вызов sortUsingSelector:
на массиве, в котором они содержащиеся:
[array sortUsingSelector:@selector(compare:)];
Преимущество такого подхода нелегко увидеть для такого простого метода compare:
, но вы можете поместить любую логику в метод compare:
.
Например, если вы имели Person
класс, который содержал дату рождения, имя и фамилию, вы могли бы сделать свой метод compare:
рода сначала DOB, и если таковые были эквивалентны, сортировать по фамилии, и если вы все равно получили эквивалентный результат, затем сортируйте по имени и т. д. Это не так просто сделать, используя методы NSSortDescriptor
(насколько я знаю).
Это заглавные буквы сначала, а маленькие буквы - вторые. – DevC