Комментарии 6
Спасибо за статью, как раз вовремя) В вашем проекте Network Provider находиться в КММ что не совсем удобно лично для меня так как использую Bagel для мониторинга сетевой активности, Preview Device in Xcode (не работает с асинхронными данными), использование mocks для тестов поэтому планирую иметь Network Provider для android и iOS раздельный. С Kotlin и KMM совсем не знаком так как разрабатываю сугубо под Apple поэтому возможно задам элементарный вопрос. Как правильно передавать iOS Network Provider в КММ с последующим его вызовом в нем, провайдер будет написан через New Concurrency Model(async/await)?
Ожидаем, когда появится возможность писать такую инициализацию в Kotlin Native коде
Я пытался запустить ваш проект на GitHub под iOS в логах вижу kotlin.IllegalStateException: There is no event loop. Use runBlocking { ... } to start one
на сколько я понимаю swift не может правильно вызвать suspend fun.
Можете, показать, что именно и откуда вы вызываете?
Я создал простой пример для чистоты эксперемента https://github.com/filimo/KMM_Demo. В ContentView.swift на onAppear я дергаю repository.getControlsList который описан как suspend fun getControlsList(), результат в SwiftUI не приходит в логах вижу KotlinException=kotlin.IllegalStateException: There is no event loop. Use runBlocking { ... } to start one., KotlinExceptionOrigin=}
Установлен Xcode 13.2.1
github.com/anioutkazharkova/kn_network_sample/blob/main/classic/iosApp/iosApp/NewsListModel.swift
Kotlin Multiplatform. Работаем с асинхронностью на стороне iOS. Publishers, async/await