Lukasz Kalnik
11/09/2021, 5:06 PMshared
:
CommonModule.kt:
val commonModule = module {
single<HttpClient> { TmdbApi.createHttpClient() }
single<TmdbApi> { TmdbApi(client = get()) }
}
fun initKoin() = startKoin {
modules(CommonModule.module)
}
In the Android app I can inject dependencies very easily:
val tmdbApi: TmdbApi by inject()
In the iOS AppDelegate I call CommonModuleKt.doInitKoin()
How can I inject the dependencies in the iOS ContentView
?Osman Saral
11/09/2021, 6:24 PMfun Koin.get(objCClass: ObjCClass, parameter: Any): Any {
val kClazz = getOriginalKotlinClass(objCClass)!!
return get(kClazz) { parametersOf(parameter) }
}
fun Koin.get(objCClass: ObjCClass): Any {
val kClazz = getOriginalKotlinClass(objCClass)!!
return get(kClazz)
}
fun Koin.get(objCProtocol: ObjCProtocol): Any {
val kClazz = getOriginalKotlinClass(objCProtocol)!!
return get(kClazz)
}
And these to Xcode project:
var koin: Koin_coreKoin = {
let doOnStartup = { print("Hello from iOS/Swift!") }
return KoinIOSKt.doInitKoinIos(doOnStartup: doOnStartup).koin
}()
func inject<T : AnyObject>() -> T {
return koin.get(objCClass: T.self) as! T
}
Osman Saral
11/09/2021, 6:25 PM*private* *var* foo: Foo = inject()
Osman Saral
11/09/2021, 6:25 PMOsman Saral
11/09/2021, 6:26 PMkoin.get(objCProtocol: Bar.self) as! Bar
russhwolf
11/09/2021, 6:35 PMwbertan
11/09/2021, 7:37 PMOsman Saral
11/09/2021, 7:53 PMrusshwolf
11/09/2021, 9:23 PMrusshwolf
11/09/2021, 9:27 PMOsman Saral
11/10/2021, 9:02 AMLukasz Kalnik
11/10/2021, 9:16 AMrusshwolf
11/10/2021, 1:36 PMrusshwolf
11/10/2021, 1:38 PMOsman Saral
11/10/2021, 2:17 PMrusshwolf
11/10/2021, 4:48 PM