Как перебрать NSArray объектов и создать новый NSArray, содержащий подмножество оригинала? - PullRequest
0 голосов
/ 02 февраля 2011

Я работаю над базовым приложением для iPhone, которое извлекает объекты ресторана из таблицы SQLite и отображает их для пользователя в таблице.Мое приложение на основе навигации.У меня нет проблем с извлечением данных из базы данных SQLite и их сортировкой.Что я могу сделать без проблем.Каждый объект ресторана имеет различные свойства, такие как «имя», «адрес», «категория» (то есть тип ресторана, например, греческий, итальянский) и другие.Теперь, после извлечения записей из базы данных, я могу успешно поместить их в NSMutableArray, а затем отсортировать их в NSArray.

Мой вопрос заключается в том, используя этот NSArray (или оригинальный NSMutableArray), яХотелось бы создать еще один массив с первым индексом, содержащим «Все», а затем каждый оставшийся индекс содержит уникальное имя категории ресторана из исходного списка, отсортированного в алфавитном порядке, а затем представить его в виде таблицы дляПользователь на следующем экране.Из этой таблицы, если пользователь выбирает «Все», пользователь переходит на другой экран с другой таблицей, где он может видеть все рестораны независимо от жанра.

Если, однако, пользователь выбирает определенную категориюиз доступного списка пользователь будет выведен на экран, на котором отображается таблица, состоящая только из тех ресторанов этого типа (например, только итальянские рестораны, только китайские рестораны, только тайские рестораны).Как бы я поступил так?Есть идеи или предложения?

1 Ответ

0 голосов
/ 02 февраля 2011

Один из возможных вариантов алгоритма:

  1. Выполните итерацию по NSMutableArray (например, for(item in array)), вставляя свойство категории каждого элемента в NSMutableSet (или NSCountedSet, если хотите).также как и количество раз, когда каждая категория встречается)
  2. Используйте метод NSSet sortedArrayUsingDescriptors: для получения отсортированного массива категорий.
  3. Добавьте запись Все в любом удобном для вас виде
...