Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swifty_viper Interactor + Service #22

Open
NikKovIos opened this issue Jan 30, 2017 · 7 comments
Open

Swifty_viper Interactor + Service #22

NikKovIos opened this issue Jan 30, 2017 · 7 comments

Comments

@NikKovIos
Copy link

NikKovIos commented Jan 30, 2017

Как инджектить сервисы в Interactor? С помощью конфигуратора, с помощью глобального сервис локатора или ещё как?

Есть ли у вас пример программы на свифте с конфигуратором в открытом доступе?

@NikKovIos NikKovIos changed the title Swifty_viper Swifty_viper Interactor + Service Jan 30, 2017
@DevAlloy
Copy link

У нас этим обычно этим занимается некий DI-контейнер.
https://github.com/rambler-digital-solutions/rambler-it-ios <- при помощи Typhoon

@NikKovIos
Copy link
Author

Я там не нашёл примера для сфифта(

@DevAlloy
Copy link

Так это вопрос непосредственно контейнера, надо выбрать контейнер и их доки с примерами смотреть. Инжекция сервиса ничем не отличается от инжекции любого другого компонента.
Либы: Dip, Swinject например.

@NikKovIos
Copy link
Author

Вопрос - где их инджектить, а не каким образом. В Objective-C для этого используется assembly. В swift он убран.

@DevAlloy
Copy link

Да такие же фабрики создаются, только затачиваются на соответствующую либу. На одном проекте юзаем Dip, соответственно в фабрике модуля все затачивается под него. Ну и собственный шаблон сделали, который завязан на версию свифта + viper + dip

@NikKovIos
Copy link
Author

Тоесть создавать отдельный assembly в модуле, только чтобы заинжектить сервис??

@DevAlloy
Copy link

Посмотрел на сам шаблон, в модуле уже есть configurator/assembly, там создается Interactor и проставляются зависимости. Для сервисного слоя нужен еще один configurator/assembly, где происходит создание нужных сервисов. Конфигуратор/фабрика модуля должны знать о конфигураторе/фабрике сервисов, чтобы проставить зависимость interactor.

В целом это будет выглядеть так:

let interactor = ModuleInteractor()
interactor.output = presenter
interactor.postService = serviceConfigurator.postService()

Соответственно конфигуратор сервисов создает сервисы, а конфигуратор модуля забирает их и проставляет в interactor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants