✅ Xcode 11.0
✅ Swift 5+
✅ iOS 13
GXInject
доступен через Swift Package Manager.
Используя Xcode 11 и выше, нужно зайти в File -> Swift Packages -> Add Package Dependency
ввести адрес репозитория.
Выбираем последнюю версию по тегу, ждем синхронизации, вуаля, можно использовать утилитки)
При обновлении утилит, можно воспользоваться File -> Swift Packages -> Update to Latest packages versions
- Создайте протоколы и имплементации
protocol HomeAPIManagerProtocol {
func getAlcoDrinks(endpoint: APICall) -> AnyPublisher<AlcoDrinkList, Error>
func getCategories(endpoint: APICall) -> AnyPublisher<AlcoCategories, Error>
}
class HomeAPIManager: HomeAPIManagerProtocol {
...
func getAlcoDrinks(endpoint: APICall) -> AnyPublisher<AlcoDrinkList, Error> {
...
}
func getCategories(endpoint: APICall) -> AnyPublisher<AlcoCategories, Error> {
...
}
}
- Зарегиструйте свои зависимости с нужной вам имплементацией, например, таким способом
// MARK: - register DI
extension AppDelegate {
private func registerDataServices() -> [Dependency] {
DependencyBuilder.buildBlock(
Dependency { HomeAPIManager() },
Dependency { HomeDBManager() }
)
}
}
- В нужном месте соберите свои зависимости. Например, так
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let dependencies = Dependencies {
registerDataServices()
registerOnboarding()
registerLoginServices()
registerHome()
}
// Resolve only when it's needed
dependencies.build()
return true
}
- Используйте @Injected для вызова вашей зависимости!
class HomeInteracor {
@Injected var homeAPIManager: HomeAPIManagerProtocol
....
}