我正面临这个问题,我已经进行了一些搜索,但是没有找到答案。
我想做什么?
我正在使用翻新从API中获取一些数据,我可以获取数据,但是我想在类中进行ForEach来查找所需的属性。
data class ChampionList(
@SerializedName("version")
val version : String,
@SerializedName("data")
val data : Data) <------ wanna do the foreach in this property
我想这样做,或者像这样:(这里我得到以下错误= for循环范围必须具有'iterator()'方法)
for(dataChampion in ChampionList.Data){
//do something
}
当我搜索时,我发现了一些有关Kotlin反射的信息,但我听不懂:(
我发现但没有用的另一件事是使用它:
for(data in ChampionList::class.memberProperties){
//access data here, but got an unresolved reference for member properties
}
classes:
data class ChampionList(
@SerializedName("version")
val version : String,
@SerializedName("data")
val data : Data)
data class Data (
@SerializedName("Aatrox") val aatrox : Aatrox,
@SerializedName("Ahri") val ahri : Ahri,
@SerializedName("Akali") val akali : Akali,
@SerializedName("Alistar") val alistar : Alistar,
@SerializedName("Amumu") val amumu : Amumu,
@SerializedName("Anivia") val anivia : Anivia
}
data class Aatrox(
@SerializedName("version") val version: String,
@SerializedName("id") val id: String,
@SerializedName("key") val key: Int,
@SerializedName("name") val name: String,
@SerializedName("title") val title: String,
@SerializedName("blurb") val blurb: String,
@SerializedName("info") val info: Info,
@SerializedName("image") val image: Image,
@SerializedName("tags") val tags: List<String>,
@SerializedName("partype") val partype: String,
@SerializedName("stats") val stats: Stats
)
所有其他类别,例如Ahri,Akali,Alistar,Amumu和Anivia与Aatrox相同
答案 0 :(得分:1)
for(data in ChampionList::class.memberProperties){
//access data here, but got an unresolved reference for member properties
}
是正确的方法(如果您在类中没有声明任何属性并且不关心顺序),但是您需要
如果尚未添加kotlin-reflect
依赖项,如here(对于Gradle所述):
implementation "org.jetbrains.kotlin:kotlin-reflect"
添加import kotlin.reflect.full.memberProperties
;
如果您确实关心顺序或不在类中包含属性,请改用ChampionList::class.primaryConstructor.valueParameters
。
答案 1 :(得分:0)
尝试这样的事情:
for (dataChampion in data.orEmpty()) {
//do something
}
或者这个:
data?.let {
for (dataChampion in it) {
}
}
我的猜测是您正在尝试遍历可为空的数据类型,希望这对您有用。英雄联盟应用程序上的好运:)