【发布时间】:2021-12-27 17:55:07
【问题描述】:
我想插入很多行,但要一一插入 - 不是批量:
var setOrder = 0
for (exercise in exercisedWithSetsDTO) {
viewModelScope.launch {
var training = TrainingExercise(
trainingId,
exercise.id,
exercise.setNo
)
var trainingId = trainingDao.insert(training)
for (i in 1..training.setsNumber) {
setDao.insert(SetEntity(trainingId.toInt(), setOrder))
setOrder++
}
}
}
"var trainingId = trainingDao.insert(training)" - 直到那一刻它才起作用。已添加所有培训。
问题是
for (i in 1..training.setsNumber) {
setDao.insert(SetEntity(trainingId.toInt(), setOrder))
setOrder++
}
不工作。没有向 db 插入任何内容。
我认为问题是因为我尝试在“var trainingId = trainingDao.insert(training)”完成之前执行“setDao.insert(SetEntity(trainingId.toInt(), setOrder))”,但我不确定并且不知道怎么解决。
以前我在添加培训时遇到问题,但是当我将 viewModelScope.launch 移到“for”中时,至少添加培训是可行的 - 我不确定这是否是正确的方法,或者我只是“破解”了我的问题
【问题讨论】:
-
我设法解决了这个问题。答案很简单,但不确定我是否应该这样做,即使它正在工作。我将“viewModelScope.launch {”移到第一个循环之外并添加了“runBlocking”
标签: android android-room kotlin-coroutines