Возможно, я могу уточнить, что говорит остальная часть группы.
Как вы наверняка знаете, табличное представление должно иметь источник данных, который реализует как минимум два обязательных метода в протоколе <UITableViewDatasource>
:
– tableView:cellForRowAtIndexPath:
– tableView:numberOfRowsInSection:
Я подозреваю, что ваша текущая реализация – tableView:cellForRowAtIndexPath:
просто извлекает две строки из вашего объекта глобальной коллекции, вставляет их в ячейку (надеюсь, что она используется повторно правильно!) И возвращает ее.
Что он, вероятно, должен делать, так это извлекать эти данные из базы данных по мере необходимости. Я бы реализовал класс (или классы) для посредничества между приложением и базой данных и возврата блоков, например, 100 строк одновременно для любого класса, выступающего в качестве источника данных (SQLite поддерживает ключевые слова LIMIT и OFFSET), который будет удерживать только этот ограниченный набор.
Когда – tableView:cellForRowAtIndexPath:
вызывается tableView, вы можете проверить, находятся ли данные в локально сохраненном блоке (я бы сделал свойство для хранения текущего смещения записи), и если нет, обновите локальный блок с запросом БД для следующей (или предыдущей, в зависимости от обстоятельств) 100 записей.
Presto. Фиксированное количество (100) записей находится в памяти в любой момент времени, источник данных предоставляет данные для представления таблицы по мере необходимости. Вы могли бы полюбить, но это общая идея.
Что касается поиска, предположим, что вы выполняете свободный текстовый поиск по заголовку, просто попросите посредника базы данных выпустить что-то вроде
'select id, title, description from yourTable where title like ?'
а связать? к тому, что пользователь вводил, с подстановочными знаками в соответствующих местах (не забудьте очистить вводимые данные ... не то, чтобы кто-то ужасно мог выполнить SQL-инъекцию в вашем приложении для iPhone, но привычки и все такое ...:)
Очевидно, что если вы просто ищете, а не фильтруете результаты, вам придется все немного откорректировать, но, надеюсь, это начало.
Удачи!