【发布时间】:2021-03-24 15:25:33
【问题描述】:
我的共享模块包含 Repository 类,该类具有两个函数,它们返回包装在自定义类中的项目列表,该自定义类扩展名为 CFlow 的 Flow。
我从kotlinconf-app 和here 中获取了CFlow 的代码:
fun <T> Flow<T>.asCFlow(): CFlow<T> = CFlow(this)
class CFlow<T>(private val origin: Flow<T>) : Flow<T> by origin {
fun watch(block: (T) -> Unit): Closeable {
val job = Job()
onEach {
block(it)
}.launchIn(CoroutineScope(Dispatchers.Main + job))
return object : Closeable {
override fun close() {
job.cancel()
}
}
}
}
存储库示例函数:
fun getData1(): CFlow<List<Profile>>
fun getData2(): CFlow<List<String>>
当我尝试在 iOS swift 代码中调用此函数时,函数的返回类型会转换为 CFlow<NSArray>,并且在 watch 函数内部,数组的类型是 Any。
这很奇怪,因为在 kotlinconf-app 和 here 中,函数的返回类型都被保留了,并且它们的代码库中不涉及强制转换。
问题:如何让 Xcode iOS 项目中知道 CFlow 的类型?
Android Studio 版本:4.1.1
Kotlin 语言和插件版本:1.4.21
Kotlin Multiplatform Mobile 插件版本:0.2.0
Xcode 版本:12.2
【问题讨论】:
标签: android ios kotlin kotlin-multiplatform kotlin-flow