Я обычно использую UILocalizedIndexedCollation
и пользовательскую категорию NSArray
для решения этой проблемы.У меня также есть оболочка (декоратор) для UILocalizedIndexedCollation, которая будет включать в себя символ поиска и обрабатывать смещения для этого для вас.
Реализация моей категории NSArray
находится здесь: http://gist.github.com/375409
Итак, учитывая массив объектов objects
со свойством name
, я бы создал индексированный массив следующим образом:
UILocalizedIndexedCollation *collation = [UILocalizedIndexedCollation currentCollation];
NSArray *indexedObjects = [objects indexUsingCollation:collation withSelector:@selector(name)]; // returns an array of arrays
Важно отметить, что UILocalizedIndexedCollation
уже имеет дело с логикойИндексирование и группирование ваших объектов локализованным образом, поэтому нет необходимости заново изобретать колесо.
Мой декоратор сопоставления, который имеет дело со значком поиска, можно найти в этом github gist .
Более подробное руководство по его использованию можно найти в моем блоге .
В этом случае вы просто передаете экземпляр моей обертки для сопоставления вместо UILocalizedIndexedCollationв приведенном выше примере.