【发布时间】:2021-08-30 07:39:34
【问题描述】:
我使用的是 Kotlin 1.5.10 和 ktor 1.6.0。
当我执行网络获取时
private suspend fun getHello(): Model.Result {
return httpClient.get("https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=multiplatform")
}
使用数据模型
object Model {
@Serializable
data class Result(val query: Query)
@Serializable
data class Query(val searchinfo: SearchInfo)
@Serializable
data class SearchInfo(val totalhits: Int)
}
Android 版本编译正常并响应
Result(query=Query(searchInfo=SearchInfo(totalhits=707)))
但是,当我在 iOS 中编译它时,它返回了一个崩溃
RESPONSE https://en.wikipedia.org/w/api.php?action=query&format=json&list=search&srsearch=multiplatform failed with exception:
kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections.HashMap@2566888
这个StackOverflow 建议下载到1.3.10,但我不能这样做,因为 KMM 无法在我最新的 Android Studio 4.2.1 中编译。另外,commonMain代码我不使用协程(仅在Android代码中)。
这个StackOverflow 状态问题与 Kodein,但我不使用 Kodein。
注意:我的代码与https://www.youtube.com/watch?v=_Q62iJoNOfg相同,只是型号和网址不同。
谁能推荐我们如何解决这个问题?
【问题讨论】:
标签: kotlin kotlin-multiplatform ktor kotlin-native kotlin-multiplatform-mobile