我正在使用 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相同,只是模型和 URL 不同。
任何人都可以推荐我们如何解决这个问题?