Лекция 14 CS193P Spring 2020 — UIKit интеграция.

На Лекции 14 курса Стэнфорда CS193p — «Developing  Application for iOS» Spring 2020 («Разработка приложений для iOS». Весна 2020) Пол Хэгерти продолжает излагать темы, которые не являются обязательными на этом курсе, но могут реально понадобится студентам в создании полноценных финальных проектов. Лекция 14 посвящена очень важной «возможности SwiftUI  — интеграции с UIKit

UIKit — это старый способ разработки приложений для iOS. Когда появился SwiftUI, то он в значительной степени делал всё, что делает UIKit, но осталось всё же несколько “фишек” в UIKit, которых сейчас нет в SwiftUI, а вы бы хотели их использовать, поэтому в SwiftUI появился специальный API, позволяющий очень легко интегрировать в него UIKit компоненты.

Если вы — уже действующий разработчик приложения для iOS и у вас есть куча UIKit кода, то, конечно же, вы бы хотели использовать его при переходе на SwiftUI, так что этот API интеграции вам также очень пригодится.

В UIKit нет MVVM, вместо этого там то, что  называется MVC (Model View  Controller). В MVC архитектуре Views как бы сгруппированы вместе и управляются тем, что называется Controller.

В SwiftUI у нас нет никаких Controllers, там Views  — это просто Views, и мы представляем их на экране, когда мы хотим. Но в UIKit Views размещаются на экране совершенно по-другому. По сути, мы представляем на экране Controller, а уже Controller управляет своими Views. Из-за того, что у нас есть Controller интеграция между SwiftUI и UIKit требует 2-х точек интеграции.

Читать далее

Лекция 13 CS193P Spring 2020 — Постоянное хранение (Persistence).

На Лекции 13 курса Стэнфорда CS193p — «Developing  Application for iOS» Spring 2020 («Разработка приложений для iOS». Весна 2020) Пол Хэгерти продолжает излагать темы, которые не являются обязательными на этом курсе, но могут реально понадобится студентам в создании полноценных финальных проектов. Рассматривается уже третья из таких дополнительных тем, а именно обзор всех возможных систем постоянного хранения (Persistence) в iOS. 

  • UserDefaults. Простая. Ограниченная (только Property Lists). Очень небольшая по объему.
  • Codable / JSON. Понятный способ преобразования практически любой структуры данных в формат JSON обмена данными и наоборот.
  • UIDocument. Интегрирует приложение Files и данные, воспринимаемые пользователем как «документы” в ваше приложение. До iOS 13 являлся UIKit ориентированным, в iOS 14 в SwiftUI 2.0 появился DocumentGroup.
  • Core Data Мощная. Объектно-ориентированная. Элегантная интеграция со SwiftUI.
  • Cloud Kit. Запоминание данных в базе данных, расположенной в «облаке» (то есть в интернете), которая работает полностью асинхронно. Следовательно, данные появляются на любых устройствах пользователя. Это очень простая в использовании база данных, у нее есть основные операции базы данных, но не такие полноценные как у Core Data, однако она отлично работает с Core Data (так что ваши данные в Core Data могут также появиться на всех устройствах)
  • FileManager/URL/DataЗапоминание данных в Unix файловой системе в iOS.

Все эти способы хранения, за исключением Codable / JSON, имеют API ещё ДО-Swift эпохи. 

Читать далее