SQLite SELECT и UITableView - PullRequest
       21

SQLite SELECT и UITableView

0 голосов
/ 19 января 2012

Мне нужно показать на UITableView с разделами все значения из таблицы sqlite.В таблице 100 000 строк.Все работает нормально, за исключением того, что до появления данных требуется почти 5 секунд.Я так понимаю, это происходит из-за большого количества строк.Таким образом, я решил перезагрузить табличное представление каждые 10 000 строк.Для каждых 10 000 строк методы

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

вызываются и возвращают правильное значение, но cellForRowAtIndexPath никогда не вызывается, кроме как в конце полного выбора (100 000).В настоящее время я выполняю SQL-запрос в основном потоке.Поэтому табличное представление не обновляется или я что-то упустил?

1 Ответ

0 голосов
/ 19 января 2012

Если вы извлекаете базу данных до того, как таблица сможет загрузиться, то разделение ее ничего не изменит. И основным потоком является поток пользовательского интерфейса, поэтому его блокировка с долгой выборкой sql задержит загрузку вашего табличного представления.

Вам не нужно иметь 100 000 строк, чтобы можно было отображать максимум 10 - 20 строк на экране.

Почему бы просто не получить выборку для счетчика в numberOfRowsInSection и сделать выборку для 1000 элементов в cellForRowAtIndexPath (или менее), идея состоит в том, чтобы получить то, что вам нужно для отображения, как можно быстрее, а затем извлечь для остальных ваши данные по мере необходимости. Например, если человек прокручивает, а у вас есть 1000 строк, а этот человек прокручивает до строки 700, это может быть временем для получения другой 1000.
В зависимости от того, что делает ваше приложение и как часто нужно выполнять прокрутку, это может быть способом сделать это.

...