Лекция 13 iOS 7 Objective-C начинается с детального обсуждения финального проекта, который должны разработать студенты Стэнфорда. Это обсуждение представляет интерес только для студентов Стэнфорда и по этой причине в моем конспекте отсутствует.
Затем совсем недолго ( буквально несколько слайдов) следует продолжение теоретической части о том, как Core Data соединяется с UITableView, потому что этот “брак заключен на небесах”. Core Data — это куча объектов, большой граф объектов, а Table Views — реально хороший инструмент для обхода графа объектов. Как нам добиться их взаимодействия? В iOS есть замечательный класс с именем NSFetchedResultsController. Пол Хэгарти очень подробно рассказывает о тонкостях использования этого класса. В результате рождается класс с именем CoreDataTableViewController, который, с одной стороны реализует все методов UITableViewDataSource, а с другой стороны — устанавливает себя делегатом для “отслеживания” изменений в Core Data.
Этот чрезвычайно полезный класс разработан Полом Хэгарти и предоставлен в распоряжение студентов для выполнения Домашней работы 6.
Далее показывается гигантский часовой демонстрационный пример «Photomania» с использование Core Data и Table View. Это огромный демонстрационный пример. Он затрагивает много новых тем и приемов программирования.
Содержание демонстрационного примера
- Получает последние (по времени) фотографии из Flickr.
- Показывает список фотографов, которые сделали все эти фото.
- Выбираем фотографа -> показывает список всех фотографий, которые сделал этот фотограф.
- Сущности Core Data: Photographer и Photo.
Используемые приемы
- Графически в Xcode определяем схему нашей базы данных.
- Создаем NSManagedObject subclasses и затем добавляем к ним категории.
- Используем эти категории для создания “factory” методов для создания объектов базы данных.
- Используем методы делегата Application Delegate (наконец-то)!
- NSManagedObjectContext.
- Background fetch (выборка в фоновом режиме) при реализации мультизадачного режима в iOS 7 (iOS 8)
- Background URL Session.
- Посылка и “прослушивание” уведомлений ( с помощью механизма NSNotification) на примере получения managedObjectContext View Controller.
- Использование CoreDataTableViewController для “подвязки” таблицы к базе данных.
Приложение «Photomania» создается «с нуля». На этой лекции создается только главная Table View — таблица фотографов, но используется совсем другая стратегия, чем та, что мы видели в приложении Shutterbug. В приложении Photomania в фоновом режиме (in the background) постоянно запрашивается Flickr о все большем и большем количестве последних фотографий, которые забрасываются в базу данных Core Data. Между тем, в приложении есть Table View, которая отслеживает появление этих данных. То есть данные в таблице фотографов будет автоматически и постоянно обновляться. Возникает много вопросов. Как построить базу данных Core Data? Как “подвязать” Table View к FetchedResultsController? Как сделать выборку данных в фоновом режиме? На все эти вопросы отвечает демонстрационный пример, который начинается на лекции 13 и продолжается на Лекции 14 (в работе).
Часть Лекции 14, касающаяся некоторых нюансов кода демонстрационного примера «Photomania«, представленного на Лекции 13, приведена в неавторизованном конспекте Лекции 13.
Код для Демонстрационного примера «Photomania_iOS9» для iOS 9 с комментариями на русском языке доступен на здесь.
Появление специальной iOS 9 версии связано с тем, что привычный нам метод
в iOS 9 упразднен и заменен на другой
Русский неавторизованный конспект лекции 13 и часть лекции 14, хронометрированные через каждые 5 минут, представлены в PDF — файле.