Код: Выделить всё
@ProvidedTypeConverter
class BackgroundTasksMemoryConverter(
private val gson: Gson,
) {
@TypeConverter
fun fromString(serialized: String): BackgroundTasksMemoryDb {
return gson.fromJson(serialized, BackgroundTasksMemoryDb::class.java)
}
@TypeConverter
fun toString(dataStructure: BackgroundTasksMemoryDb): String {
return gson.toJson(dataStructure)
}
}
< /code>
, который я использую как это: < /p>
myRoomDatabase = Room.databaseBuilder(
context,
MyRoomDatabase::class.java,
DatabaseConstants.DATABASE_NAME
).apply {
addTypeConverter(BackgroundTasksMemoryConverter(gson))
}.build()
< /code>
с MyroomDatabase: < /p>
@Database(
entities = [
BackgroundTasksMemoryDb::class
],
version = 1
)
@TypeConverters(
value = [
BackgroundTasksMemoryConverter::class,
]
)
internal abstract class MyRoomDatabase : RoomDatabase() {
abstract val backgroundTasksMemoryDao: BackgroundTasksMemoryDao
}
< /code>
Насколько я могу судить, это правильный подход для ручной экземпляры преобразователей. Тем не менее, я получаю эту ошибку во время выполнения: < /p>
FATAL EXCEPTION: main
Process: com.techyourchance.android.debug, PID: 30902
java.lang.IllegalArgumentException: Unexpected type converter com.techyourchance.android.database.converters.BackgroundTasksMemoryConverter@29dc933. Annotate TypeConverter class with @ProvidedTypeConverter annotation or remove this converter from the builder.
Подробнее здесь: https://stackoverflow.com/questions/773 ... ter-throws