Open NikKovIos opened 7 years ago
У нас этим обычно этим занимается некий DI-контейнер. https://github.com/rambler-digital-solutions/rambler-it-ios <- при помощи Typhoon
Я там не нашёл примера для сфифта(
Так это вопрос непосредственно контейнера, надо выбрать контейнер и их доки с примерами смотреть. Инжекция сервиса ничем не отличается от инжекции любого другого компонента. Либы: Dip, Swinject например.
Вопрос - где их инджектить, а не каким образом. В Objective-C для этого используется assembly. В swift он убран.
Да такие же фабрики создаются, только затачиваются на соответствующую либу. На одном проекте юзаем Dip, соответственно в фабрике модуля все затачивается под него. Ну и собственный шаблон сделали, который завязан на версию свифта + viper + dip
Тоесть создавать отдельный assembly в модуле, только чтобы заинжектить сервис??
Посмотрел на сам шаблон, в модуле уже есть configurator/assembly, там создается Interactor и проставляются зависимости. Для сервисного слоя нужен еще один configurator/assembly, где происходит создание нужных сервисов. Конфигуратор/фабрика модуля должны знать о конфигураторе/фабрике сервисов, чтобы проставить зависимость interactor.
В целом это будет выглядеть так:
let interactor = ModuleInteractor()
interactor.output = presenter
interactor.postService = serviceConfigurator.postService()
Соответственно конфигуратор сервисов создает сервисы, а конфигуратор модуля забирает их и проставляет в interactor.
Как инджектить сервисы в Interactor? С помощью конфигуратора, с помощью глобального сервис локатора или ещё как?
Есть ли у вас пример программы на свифте с конфигуратором в открытом доступе?