【问题标题】:Convert attributes from one data class to another data class (subclasses)将属性从一个数据类转换为另一数据类(子类)
【发布时间】:2021-01-11 11:00:55
【问题描述】:

你好)。需要一些帮助。我知道如何将数据从 A 类传输到 B 类,但我不知道如何将数据从包含 A 类的子类 A.A1 传输到包含 B 类的子类 B.B1。

我的A班:

data class SpaceXProperty(
   val  flight_number: Int,
   val launch_year: Int,
   val links: Links
){

   data class Links(val mission_patch: String?)
}

我的B班:

data class Models(val flightNumber: Int,
                  val mlinks: Mlinks
)
{
    data class Mlinks(val mission_patch: String?)
}

我创建了下一个函数

fun List<SpaceXProperty>.asDomainModel(): List<Models>{
   return map {
      Models(
         flightNumber = it.flight_number,
         llinks = it.links //here i got error type mismatch "required: Models.Mlinks found: SpaceXProperty.Links"

      )
   }
}

为了避免这种情况 - 我将 B 类更改为下一个

data class Models(val flightNumber: Int,
                  val llinks: SpaceXProperty.Links
                  
)

我是 kotlin 的新手,所以不知道如何正确地将数据从一个子类映射到另一个子类。请帮忙。

我试图将下一个函数放在有趣的 List.asDomainModel() 中,但它不起作用。

fun List<SpaceXProperty.Links>.asDDomainmodel(): List<Models.Llinks>{
   return map {
     Models.Llinks(
         mission_patch = it.mission_patch) }
}

我完全从“https://api.spacexdata.com/v3/launches”获取数据,并希望将此数据粘贴到另一个数据类,如“存储库”。在这里Moshi cannot parse nullable 我得到了我需要使用子类的帮助,但在下一步我遇到了问题。

【问题讨论】:

    标签: kotlin data-class


    【解决方案1】:

    几个小错误:

    • 在第一个asDomainModel 函数中,您使用了llinks 属性而不是mlinks
    • 试图将Links 的对象分配给Mlinks

    以下代码解决了问题

    fun List<SpaceXProperty>.asDomainModel() = map {
        Models(
            flightNumber = it.flight_number,
            mlinks = Models.Mlinks(it.links.mission_patch)
        )
    }
    

    原来的类保持原样

    data class SpaceXProperty(
        val flight_number: Int,
        val launch_year: Int,
        val links: Links) {
        data class Links(val mission_patch: String?)
    }
    
    data class Models(val flightNumber: Int, val mlinks: Mlinks) {
        data class Mlinks(val mission_patch: String?)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多