Лекция 11 CS193P Spring 2016 — Core Data Demo (Демонстрационное приложение).

Screen Shot 2016-08-09 at 9.02.43 PM

Лекция 11 посвящена демонстрационному примеру «Smashtag L11« с использование Core Data. Этот пример построен на основе приложения  «Smashtag L9«, которое по существу является клиентом Twitter, выбирающем твиты по специальной строке поиска, например, #stanford. Он демонстрирует все теоретические положения, представленные на Лекции 10.

Screen Shot 2016-08-09 at 7.48.48 PM

Задачей демонстрационного приложения  «Smashtag L11« является показ списка всех пользователей Twitter, кто твитил, например, со #stanford в своем тексте. Должны быть учтены не только твиты, полученные в результате последнего поиска  для строки #stanford, но и вообще все твиты, когда-либо связанные с поиском по строке  #stanford. Для этого используется база данных Core Data. Каждый раз при получении твитов «из сети» с помощью специального фреймворка Twitter c Лекции 9, они не только показываются на экране, но и записываются в Core Data.  Потом мы сможем запрашивать эти твиты и получать любую информацию, включая получение списка пользователей, которые твитили с текстом, содержащим, например, #stanford.

Подробно демонстрируются все этапы создания приложения с Core Data:

  • Графическое построение в Xcode Модели Данных (или схемы базы данных) для двух Сущностей Tweet и TwitterUser c Атрибутами и Взаимосвязями типа «To One» и «To Many«.
  • Получение контекста NSManagedObjectContext для работы с базой данных, в том числе и из самого NSManagedObject.
  • Автоматическое создание в Xcode NSManagedObject subclasses  для Сущностей  Tweet и TwitterUser.
  • Заполнение данными взаимосвязанных Сущностей.
  • Выборка и отображение данных из Core Data с помощью NSFetchResultsController, а точнее с помощью прекрасного класса CoreDataTableViewController, специально реализованного на его основе Полом Хэгерти для этого курса..
  • Формирование запросов, содержащих обращение как непосредственно к Атрибутам Сущности, так и к ее Взаимосвязям.

Все операции с базой данных выполняются в предположении, что вы работаете в многопоточной среде и некоторые операции могут «выбрасывать» (throws) ошибки. «Асинхронность» выполнения операций с базой данных поставлена во главу этого демонстрационного приложения. Показаны некоторые «парадоксы» этой асинхронности. Рассматриваются различные варианты обработки ошибок с помощью do {…} catch let error и try, а также try?.

Акцентируется внимание на том, что если вы работаете с одной стороной Взаимосвязи, другая сторона Взаимосвязи синхронизируется автоматически, и это совершенно замечательная способность Core Data. Вам никогда не надо беспокоиться об целостности базы данных,  Core Data управляет целостностью в любой момент времени вместо вас.

В конце Лекции 11 обсуждается важность проектирования правильной схемы базы данных, если от вас требуется сортировка по количеству некоторых объектов в базе данных, что является предметом Домашнего Задания 5.

 Лекция и слайды на английском языке представлены в iTunes название “11. Core Data Demo”.   Код демонстрационного примера «Smashtag L9» для Swift 3.0  и Xcode 8 код находится на Github, а для Swift 3 .2  и Xcode 9 — также на Github.

Русскоязычный неавторизованный конспект Лекции 10, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.