gpt4 book ai didi

android - 尽管对象存在 Kotlin\Room,SELECT 查询返回 null

转载 作者:行者123 更新时间:2023-11-29 23:15:53 26 4
gpt4 key购买 nike

我正在尝试使用 Rooms 构建闹钟应用。我的方法 repository.getAlarmById(1) 返回 null。但是repository.getAlarms()输出

Alarm(id=1, min=12, hour=12, enabled=true, isRepeating=true)

Alarm(id=2, min=13, hour=13, enabled=true, isRepeating=true)

这是AlarmDao

@Dao
interface AlarmDao {

@Query("SELECT * FROM alarm_table")
fun getAll(): LiveData<List<Alarm>>

@Query("SELECT * FROM alarm_table WHERE id = :id")
fun getById(id: Int): LiveData<Alarm>

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(alarm: Alarm)

@Delete
fun delete(alarm: Alarm)
}

报警库

class AlarmRepository (private val alarmDao: AlarmDao): AlarmDataSource {

override fun getAlarms(): LiveData<List<Alarm>> {
return alarmDao.getAll()
}

override fun getAlarm(id: Int): LiveData<Alarm> {
return alarmDao.getById(id)
}

override fun saveAlarm(alarm: Alarm) {
doAsync { alarmDao.insert(alarm) }
}

override fun deleteAlarm(alarm: Alarm) {
doAsync { alarmDao.delete(alarm) }
}
}

报警

@Entity(tableName = "alarm_table")
data class Alarm(
@PrimaryKey
var id: Int = 0,

@ColumnInfo(name = "min")
var min: Int = -1,

@ColumnInfo(name = "hour")
var hour: Int = -1,

@ColumnInfo(name = "enabled")
var enabled: Boolean = true,

@ColumnInfo(name = "isRepeating")
var isRepeating: Boolean = false )

为什么我总是得到 null?

最佳答案

您的代码似乎没问题。我的建议是检查两件事。

首先。将 LIMITED 1 添加到您的查询并检查它

其次。如果仍然不工作,请确保您的 LiveData 工作正常。请记住,实时数据仅在对象更改时才起作用!此问题可能存在问题,您可以手动将观察者附加到您的 viewmodel。要测试此问题,只需从返回类型中删除 LiveData 并再次检查即可。

关于android - 尽管对象存在 Kotlin\Room,SELECT 查询返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55384842/

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