Лекция 14 CS193P Fall 2017 — Еще о Documents, Демонстрационный пример Persistence (постоянное хранение) и Documents.

Лекция 14 состоит из двух неравных частей :

  • первая меньшая часть является продолжением теоретической части, связанной с UIDocument и начатой на Лекции 13. Она посвящена UIDocumentBrowserViewController , прекрасному и очень мощному интерфейсу в вашем собственном приложении для создания файлов, перемещения файлов, удаления файлов, размещения их в папках, перетаскивания файлов с iCloud Drive на локальный жесткий диск.
  • вторая  часть — это огромный демонстрационный пример, охватывающий тему постоянного хранению (persistence) и тему создания приложений, ориентированных на работу с документами, на основе UIDocument и браузера документов UIDocumentBrowserViewController.

Архитектура браузера документов UIDocumentBrowserViewController.

Очень важно понимать, что браузер документов UIDocumentBrowserViewController — это просто View Controller, но он ВСЕГДА является КОРНЕВЫМ View Controller вашего приложения. Когда ваше приложение запускается, то первое, что видят пользователи, это браузер документов. Там они выбирают тот документ, который им нужен, а дальше вступает в действие уже ВАШ UI, на экран выходит ВАШ MVC и делает свою работу по показу ВАШИХ документов.

Впервые с начала курса профессор предлагает использовать в Xcode для создания приложений Document based Apps, основанных на документах, >шаблон Document Based App, отличный от Single View App. Потом очень подробно рассматривает все, что с этим шаблоном «пришло» и представляется стратегию настройки браузера документов UIDocumentBrowserViewController для показа  ВАШИХ документов:

  1. Использовать ваш UIDocument subclass вместо заглушки
  2. Использовать код вашего MVC для показа документа (уже использующего UIDocument) вместо заглушки
  3. Добавить код в subclass UIDocumentBrowserViewController (UIDBVC) для…
    1. конфигурации UIDBVC (разрешить множественный выбор? создание нового документа? и т.д.)
    2. определения url шаблона для создания нового документа
    3. модального представления MVC вашего документа с использованием его URL
  4. Обновить Document Types в установках проекта для ваших типов (вместо public.image)

Emoji Art приложение с постоянным хранением в виде документа UIDocument

На Лекции 14 также будет представлен большой демонстрационный пример создания Emoji Art приложения с постоянным хранением в виде документа UIDocument, в котором используется Codable для создания JSON представления документа и хранения в файловой системе, и UIDocumentBrowserViewController для выбора/создания/переименования/перемещения Emoji Art документов.

Профессор движется к созданию этого приложения очень постепенно, детально останавливаясь на каждом этапе превращения обычного Emoji Art приложения по созданию эмоджи картин, доставшееся нам из Лекций 11 и 12, в приложение, основанное на документах UIDocument.

Вот эти шаги:

  1. Использование Codable для создания JSON представления эмоджи картины
  2. Запоминание в файловой системе
  3. Превращение эмоджи картины вUIDocument и использование мощного API класса UIDocument для создания, открытия, закрытия, определения и отслеживания состояния полученного EmojiArt документа 
  4. Интеграция EmojiArt документа в браузер документов UIDocumentBrowserViewController и создание миниатюры thumbnail  EmojiArt документа для показать ее в браузере вместо иконки типа файла.

Пол Хагерти послал своим студентам окончательный код демонстрационного приложения Emoji Art, который дополняет представленный на Лекции 14 вариант демонстрационного примера использованием делегирования для избавления от кнопки «Save«, и настройкой специального типа файла .emojiart.

Код демонстрационного примера для Лекции 14, который послал професор, находится на Github  для iOS 11 и на Github для iOS 12 в папке EmojiArt L14+. Промежуточные варианты приложения Emoji Art, соответствующие различным шагам разработки, находятся   на Github в папке EmojiArt L14. Лекция 14 и слайды на английском языке находятся на  iTunes название “14. Persistence, and Documents Demo.”
Русскоязычный неавторизованный конспект Лекции 14, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также в формате Google Doc доступны на платной основе.