Необходимо клонировать репозиторий https://git.miem.hse.ru/19111/miemappios. Запустить XCode и отрыть корневой файл проекта.
При начале работы над задачей необходимо создать ветку (название по id задачи в taiga). При завершении работы, нужно сделать push в репозиторий.
Следующие зависимости подключаются через CocoaPods:
Модуль навигации подключается через SPM
Каждый модуль по сути является одним основным экраном, внутри которого может осуществляться своя навигация, независимо от главного приложения. Этому модулю также могут быть нужны доступ к постоянному хранилищу данных или сетевым запросам. Таким образом весь модуль можно свести к одной основной сущности, которая при инициализации принимает необходимые зависимости в виде аргументов, а затем предоставляет свой основной экран главному приложению. Затем на основе полученных экранов строится меню, которое позволяет открывать эти экраны. Это происходит подстановкой выбранного экрана в экран главного приложения.
Данный подход позволяет свести к минимуму количество точек интеграции модуля. Преимуществом этого является быстрая интеграция модуля, так как чтобы его экран отображался в приложении и его меню надо всего лишь создать сущность модуля и затем передать его экран в меню. Это позволяет снизить количество конфликтов при разработке сразу несколькими программистами. Также такая архитектура позволяет заменять одну реализацию модуля на другую, например, в случае смены дизайна интерфейса.
Каждый модуль может быть разработан внутри с использованием своей архитектуры. Это даёт возможность сторонним разработчикам гибкость и удобство выбора. Однако такой подход может привести к тому, что новым разработчикам будет трудно понять строение программы. Поэтому все модули имеют одинаковую архитектуру. Она основана на архитектурном шаблоне Model-View-View Model. Внутри основной сущности модуля создаются источник данных и основное представление на основе полученных зависимостей от основного приложения. Источник данных предоставляет модель для представления на основе данных с диска и из сети. Он также несёт ответственность за обновление данных в результате действий пользователя.
iOS разработчик Кофман Мелани
стажеры iOS разработчики:
Королев Дмитрий
Рыбаковский Никита
Савин Ярослав