Загрузка представлений


Загрузка представлений

Код можно переместить в viewDidLoad, но этот метод вызывается только при загрузке представлений из .xib. Возникает две проблемы: во-первых, если мы пометим преступника как пойманного, в списке пойманных преступников он не появится, потому что его данные загружаются только один раз. Во-вторых, viewDidLoad вызывается до applicationDidFinishLaunching, а это означает, что представления попытаются получить свои данные до того, как у делегата приложения будет возможность скопировать базу данных в нужное место. Мы должны усовершенствовать управление данными, полученными в результате выборки.


Так как компонент UITableView часто используется для работы с большими объемами данных, для него существует специальный вспомогательный класс Core Data. Класс NSFetchedResultsController работает с контекстом управляемых объектов и объектом NSFetchRequest, и обладает рядом полезных особенностей.


Чрезвычайно эффективное использование памяти.

NSFetchedResultsController работает с NSFetchRequest и моделью управляемых объектов, сводя к минимуму объем данных, фактически находящихся в памяти. Например, даже если в приложении хранятся данные 10 ООО преступников, NSFetchedResultsController пытается держать в памяти только те данные, которые необходимы UITableView для отображения, вероятно, около 10 или 15.


Высокопроизводительная поддержка UITableView.

Класс UITableView должен знать количество секций, количество строк в секции и т. д. Встроенные средства NSFetchedResultsController позволяют быстро получить эту информацию без загрузки всех данных.


Встроенное отслеживание изменений в данных.

Мы уже говорили о том, как контекст управляемых объектов узнает об изменении данных. NSFetchedResultsController может использовать это обстоятельство для передачи своему делегату информации об изменении данных, соответствующих результатам выборки.


Пора заняться оптимизацией.

Чтобы использовать при выборке класс NSFetchedResultsController, необходимо провести небольшой рефакторинг, но зато после его завершения Боб может передать нам базу данных на 100 ООО преступников, и приложение iBountyHunter без малейших проблем с ней справится. Мы проведем рефакторинг для CapturedListViewController, но описанные принципы применимы и к FugitiveListViewController.


  • Дата: 5-01-2015, 19:14

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Загрузка представлений

Технологии, секреты и фишки Apple: Iphone, iPad, iPod