Группировка данных в массиве NSMutable - PullRequest
0 голосов
/ 19 апреля 2010

У меня есть массив, который я загружаю с большим количеством данных из XML-файла. Я показываю это в виде таблицы, а затем, когда вы нажимаете «Сказать автора», он показывает все свои книги.

В тот момент, когда мой NSMutableArray имеет запись для каждой книги с названием, автором и так далее. Таким образом, в таблице авторов она отображает имена авторов столько раз, сколько у них книг. Я хочу сгруппировать данные массива так, чтобы таблица отображала каждого автора только один раз, но автор содержит массив его книг. Кажется простым, но я не могу найти групповой метод для массивов.

1 Ответ

1 голос
/ 19 апреля 2010

Вы можете перебрать массив книг и создать новый массив для авторов. Для каждой книги проверьте, находится ли этот автор уже в массиве авторов с помощью containsObject. Но тогда вам также придется беспокоиться о том, чтобы показывать книги этого автора только из массива книг, когда пользователь выбирает автора.

Вероятно, лучше всего сначала загрузить XML-файл в NSMutableDictionary, где ключами являются имена авторов, а объектом для каждого ключа является NSMutableArray книг этого автора.

Тогда автор таблицы будет использовать ключи словаря в качестве источника данных (используя массив, возвращаемый allKeys, который затем можно будет отсортировать, если необходимо, или использовать keysSortedByValueUsingSelector), а таблица книг будет использовать массив книг выбранного ключа.

Если данные становятся слишком большими для одновременной загрузки в память, вам придется использовать другие параметры, такие как SQLite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...