В
первой части этой статьи мы рассмотрели основы работы с
Core Data в
SwiftUI на примере шаблонного приложения, предложенное
Apple. Это было тривиальное приложение, в котором всего лишь один объект
Core Data с одним единственным атрибутом, и тем не менее было показано, что давая объектам
Core Data дополнительную функциональность с помощью „синтаксического сахара“ в расширении
extension их классов
class, автоматически генерируемых
Xcode, можно добиться комфортной работы с
Core Data в
SwiftUI. Эти классы являются миниатюрными
ViewModels для наших
SwiftUI Views, так как они реализуют протоколы
ObservableObject и
Identifiable. И
Apple научила их прекрасно «играть» на поле реактивности SwiftUI.
Во второй части статьи я хочу показать, что роль автоматически генерируемых
Xcode классов
class для объектов
Core Data существенно возрастает при работе с реальными взаимосвязанными объектами — рейсами
Flights, аэропортами
Airports и авиакомпаниями
AirLines, которые мы получаем в интернете на сайте компании
FlightAware и размещаем в локальной базе данных
Core Data.
Создаваемое в этой части статьи приложение с именем
CoreDataSwiftUIFlights является сильно упрощенной модификацией реального приложения
Enroute из стэнфордских курсов CS193P 2020, которое оперативно подкачивает данные с сервера
FlightAware и требует от вас платной подписки на сервис
FlightAware .
Однако, просто зарегистрировавшись на сайте компании
FlightAware, вы можете бесплатно получить временной срез любой интересующей вас информации о рейсах
Flights, аэропортах
Airports и авиакомпаниях
Airlines в
JSON формате. Эти данные размещаются в
Core Data с учетом взаимосвязей этих объектов, и вы можете не просто видеть всю информацию о рейсах, но и делать различные запросы к ней с помощью фильтров и сортировать ее нужным вам способом.
Код находится на
Github.