Вопрос проверяет умение объяснять конфликт между архитектурными принципами и UI-ориентированными фреймворками.
MapKit сложно интегрировать в CleanSwift из-за его сильной зависимости от UI и состояния ViewController. Карта требует прямого управления и обратных колбэков. В CleanSwift же логика должна быть изолирована от UI. Это создает конфликт между архитектурной чистотой и практическими требованиями. Приходится искать компромиссы.
Основная проблема интеграции MapKit в CleanSwift заключается в несовпадении философий.
CleanSwift требует:
однонаправленного потока данных
отсутствия бизнес-логики во View
четких границ ответственности
MapKit, в свою очередь:
активно использует делегаты
отправляет события из UI наружу
ожидает мгновенной реакции на пользовательские действия
Delegate-подход
События карты приходят через делегаты ViewController.
Их нельзя напрямую прокинуть в Interactor без нарушения архитектуры.
Состояние карты
Камера, зум и выбранные объекты — это UI-состояние.
Но при этом они влияют на бизнес-логику.
Обратные события
Пользователь двигает карту → нужно загрузить новые данные.
Это обратный поток, который сложно вписать в однонаправленную схему.
Чаще всего:
View обрабатывает события карты
преобразует их в абстрактные события
передает их в Interactor как пользовательские действия
MapKit сложно интегрировать в CleanSwift без компромиссов, так как карта не является «пассивным» UI-компонентом.