@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.
У меня есть конвертер этого типа: < /p> [code]@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. [/code] Я делаю что -то неправильно, или это ошибка?