【问题标题】:kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozen kotlin.collections.HashMap@3ee0f08 in KMM iOSkotlin.native.concurrent.InvalidMutabilityException:KMM iOS 中冻结的 kotlin.collections.HashMap@3ee0f08 的突变尝试
【发布时间】: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


    【解决方案1】:

    我发现在这里提交了一个问题https://github.com/Kotlin/kotlinx.serialization/issues/1450

    我尝试了一种解决方法,即 useAlternativeNames = false 用于 Json 序列化配置,然后它解决了我的问题

            install(JsonFeature) {
                val json = kotlinx.serialization.json.Json {
                    ignoreUnknownKeys = true
                    useAlternativeNames = false
                }
                serializer = KotlinxSerializer(json)
            }
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2019-05-14
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多