Улучшение пользовательского интерфейса в Obj-C, UITableView для обработки большого количества записей. - PullRequest
1 голос
/ 26 февраля 2012

Я ищу какое-то техническое руководство, возможно, учебник.

Мне нужно обслуживать намного больше строк / ячеек в табличном представлении, которое я ожидал.

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

Я думаю, что мне нужно будет использовать лимит / смещение с моим запросом sqlite, однако в моей таблице есть разделы и т. Д.

Мне также придется создать ячейку / строкукогда пользователи нажимают, чтобы сказать, показывают следующие 50 записей.

Это должно быть довольно распространенной проблемой, которая должна была обсуждаться ранее.

Моя проблема - время, которое потребуется, чтобы разработать этоособенность.Я слишком далеко в проекте, чтобы преобразовать в основные данные

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

Возможно, Core Data может быть правильным решением.Если вы используете NSfetchedResultControllerNSFetchRequest), связанным с UITableView, элементы будут управляться за вас.

Но если вы не хотите использовать Базовые данные, вот простое предложение покак это сделать:

Загрузите в модель набор данных (скажем, первые 50 элементов).После загрузки модель используется для представления данных в таблице.Когда пользователь достигает конца таблицы, я показываю метку «Показать больше» в разделе нижнего колонтитула для этого представления таблицы.Затем, если пользователь щелкнет по нему, снова загрузит данные (остальные 50 элементов), кеширует их в модели, перезагрузит таблицу и т. Д.

Этот прием можно применить, если у вас есть один раздел и несколько строк.

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Если вы не хотите использовать Core Data, я сделаю следующее (некоторые рекомендации).

Использование оператора LIMIT SQL для ограничения количества результатов (например, 20).

В вашем .h создайте переменную смещения, например:

NSUInteger offset;

и метод, подобный:

- (NSArray*)fecthMore;

Затем в .m внедрите этот метод, как показано ниже:

- (NSArray*)fecthMore
{
   // using the offset to retrieve the array of results (e.g resultArray)
   // the first time you grab the first 20 elements (0-19), the second time the next 20 (20-39)
   // and so on

   offeset += [resultArray count]; // next 20
   return resultArray;
}

С помощью функции возврата возвращаемого массива в каждый раз модель.*

0 голосов
/ 26 февраля 2012

Рэй Вендерлих (Ray Wenderlich) имеет отличный учебник по использованию NSFetchedResultsController:

http://www.raywenderlich.com/999/core-data-tutorial-how-to-use-nsfetchedresultscontroller

Это определенно решит проблемы, возникающие при работе с большими таблицами.Использовать NSFetchedResultsController довольно просто.Более трудной частью будет перемещение вашего приложения из sqlite в Core Data, но, к счастью, его предыдущие уроки также могут быть полезны.

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