我有问题,我不知道为什么但我的变量不注入并且等于null。 我提供这样的方法:
@Provides
@Singleton
fun provideSource(context: Context): DatabaseSource = DatabaseSource(context, Models.DEFAULT, DB_NAME, DB_VERSION)
@Provides
@Singleton
fun provideStoreDB(databaseSource: DatabaseSource): KotlinReactiveEntityStore<Store> = KotlinReactiveEntityStore(KotlinEntityDataStore(databaseSource.configuration))
@Provides
@Singleton
@NotNull
fun provideStores() : Database<Store> = PersistentDatabase(Store::class)
模型商店的类:
它是“坚持不懈”的继承人。
@Entity
data class Store(val id: Long = 0, val name: String = "", val description: String = "", val date: String = "") : DisplayableItem, Persistable
使用DB
工作的类@Singleton
class PersistentDatabase <T: Any> (val type: KClass<T>) : Database <T> {
@Inject
internal lateinit var store: KotlinReactiveEntityStore<T>
override fun addResult(item: T): Completable = store.insert(item).toCompletable()
override fun addListResult(item: List<T>): Completable = store.insert(item).toCompletable()
override fun deleteResult(item: T): Completable = store.delete(item)
override fun getAllResults(): Single<List<T>> = (store select type).get().observable().toList()
override fun removeAllResults(): Completable = store.delete(type).get().single().toCompletable()
}
在我的存储库层中,我使用它:
@Inject
lateinit var database: Database<DetectedLanguageText>
fun getHistory(): Single<List<DetectedLanguageText>> {
return database.getAllResults()
.map { it.sortedByDescending { it.date } }
.transitSuccessToEmitter(historyEmitter)
}
但是当我处于功能 getAllResults 变量
时 @Inject
internal lateinit var store: KotlinReactiveEntityStore<T>
不注入并等于 null 。为什么它对我不起作用?
答案 0 :(得分:1)
我看不到你在PersistentDatabase中注入KotlinReactiveEntityStore的位置。您只需在提供方法中创建一个实例,但不会执行注入。