Мы знаем, что
ObservableObject классы с его
@Published свойствами созданы в
Combine специально для
View Model в
SwiftUI. Но в точности ту же самую
View Model можно использовать и в
UIKit для реализации архитектуры
MVVM, хотя в этом случае нам придется вручную «привязать» (
bind)
UI элементы к
@Published свойствам
View Model. Вы удивитесь, но с помощью
Combine это делается парой строк кода. Кроме того, придерживаясь этой идеологии при проектировании
UIKit приложений, вы в дальнейшем безболезненно перейдете на
SwiftUI.
Цель этой статьи состоит в том, чтобы на примитивно простом примере показать, как можно элегантно реализовать
MVVM архитектуру в
UIKit с помощью
Combine. Для контраста покажем использование той же самой
View Model в
SwiftUI.
В статье будут рассмотрены два простейших приложения, позволяющих выбирать с сайта
OpenWeatherMap самую свежую информацию о погоде для определенного города. Но
UI одного из них будет создан с применением
SwiftUI, а другого — с помощью
UIKit. Для пользователя эти приложения будут выглядеть почти одинаковыми.
Код находится на
Github.