Как я могу настроить порядок сортировки для NSArray строк?

У меня есть ряд строк, представляющих следующие имена файлов: hello1(eng).txt, hello1(por).txt, hello1.txt. Когда я сортирую их, используя

NSArray *array = [filePaths sortedArrayUsingSelector: @selector(compare:)];

Возвращенный заказ: hello1(eng).txt, hello1(por).txt, hello1.txt. Вместо этого я хотел бы иметь такой порядок, в котором элементы в скобках возвращаются последними: hello1.txt, hello1(eng).txt, hello1(por).txt.

Как я могу настроить поведение сортировки, чтобы обеспечить этот порядок?


person bitmapdata.com    schedule 25.07.2011    source источник


Ответы (1)


sortedArrayUsingSelector: указывает массиву запрашивать у отдельных объектов, которые он пытается отсортировать, соответствующий порядок сортировки. Чтобы предоставить свои собственные, используйте одну из других функций sortedArrayUsing…. Вероятно, самым простым для вашей задачи является sortedArrayUsingFunction:context:, который позволяет вам указать простую старую функцию C, которая выполняет сравнение.

Другим подходом может быть использование категории для добавления функции сортировки в класс NSString, что-то вроде compareInMyFavor:, и передача ее в качестве селектора для sortedArrayUsingSelector:.

Теперь, когда я думаю об этом, последнее, вероятно, является более чистым решением. Ваш звонок.

person Fabian Schuiki    schedule 04.08.2011
comment
Я бы предпочел sortedArrayUsingComparator: позволяет передать блок вместо того, чтобы возиться с определением функции c и контекста. - person Joshua Weinberg; 04.08.2011