Как добавить конвертер типов с помощью Room? - PullRequest
1 голос
/ 05 января 2020

Я использую Room для сохранения данных в SQLite. Но я получаю конвертер ошибок типа.

У меня есть класс данных как:

@Entity(tableName = FavoriteDatabase.teamTable)
data class TeamItem(
    @SerializedName("idAPIfootball")
    val idAPIfootball: Any?,
    @SerializedName("idLeague")
    val idLeague: String?,
    @SerializedName("idSoccerXML")
    val idSoccerXML: String?,
    @PrimaryKey
    @SerializedName("idTeam")
    val idTeam: String,
    @SerializedName("intFormedYear")
    val intFormedYear: String?
}

Я получаю ошибку:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private final java.lang.Object idAPIfootball = null;

Я пытаюсь добавить конвертер:

object Converter {
    @TypeConverter
    @JvmStatic
    fun toString(data: Any): String = data.toString()

    @TypeConverter
    @JvmStatic
    fun toAny(data: String): Any = data
}

и добавить в RoomDatabase:

@Database(entities = [TeamItem::class, EventItem::class], version = 1, exportSchema = false)
@TypeConverters(Converter::class)
abstract class FavoriteDatabase : RoomDatabase() {
}

и я получаю ошибку:

Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter data
        at id.afdaldev.footballmatchscheduleapp.data.model.Converter.toString(Unknown Source:2)

1 Ответ

0 голосов
/ 06 января 2020

Используйте этот код для конвертера

 @TypeConverter
    fun fromAnyToString(value: Any?): String? {
        return if (value == null) null else String(value)
    }
...