gpt4 book ai didi

android - 带构造函数的房间类型转换器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:53 24 4
gpt4 key购买 nike

我有 Room TypeConverter,我需要将参数注入(inject)它的构造函数

class RoomConverters(moshi Moshi) {

@TypeConverter
fun fromUserActionLog(data: UserActionLogModel): String {
return moshi.adapter(UserActionLogModel::class.java).toJson(data)
}

@TypeConverter
fun toUserActionLog(json: String): UserActionLogModel {
return moshi.adapter(UserActionLogModel::class.java).fromJson(json)}
}
}

但是当我无法使用构造函数将TypeConverter注解到数据库对象时;

@Database(entities = [SsidModel::class], version = 1, exportSchema = false)
@TypeConverters(RoomConverters::class)
abstract class AppDatabase : RoomDatabase() {

abstract fun ssidDao(): SsidDao
}

有什么办法可以实现吗?

最佳答案

您可以使用 2.3.0-alpha03 版本的构造函数参数创建 Room TypeConverter

发行说明:

Room now has APIs for providing instances of type converters such thatthe app can control their initialization. To mark a type converterthat will be provided to Room use the new annotation@ProvidedTypeConverter

https://developer.android.com/jetpack/androidx/releases/room#2.3.0-alpha03

在您的情况下,您应该将 @ProvidedTypeConverter 添加到 RoomConverter

@ProvidedTypeConverter    
class RoomConverters(moshi: Moshi)

在数据库创建时创建转换器并将其传递给数据库构建器:

val roomConverter = RoomConverters(Moshi())
val db = Room.databaseBuilder()
.addTypeConverter(roomConverter)
.build()

您也可以使用 DI 框架,例如 Dagger 2

关于android - 带构造函数的房间类型转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114573/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com