#android #kotlin #objectbox
#Android #kotlin #objectbox
Вопрос:
Я беспрепятственно использую object box уже 3 года. Я изменил один из своих объектов, добавив дополнительный параметр с именем «public», который является логическим значением. Когда я сохраняю объект в базе данных, значение равно true. Когда я извлекаю объект из базы данных, он имеет значение false
private fun storeChannelsInDb(channels: List<Models.Channel>) {
channels.forEach { channel ->
val channelMapped = ChannelMapper.toObjectBoxModel(channel)
channelBox.box.put(channelMapped)
if(channelMapped.channel_id == 7 ){
println("********* storing " channelMapped.public)
}
}
}
override fun getChannels(): List<Channel> {
for (channel in channelBox.box.all){
if(channel.channel_id == 7){
println("********* fetching " channel.public)
}
}
return channelBox.box.all
}
Я не указываю значение по умолчанию для этого параметра, поскольку оно всегда возвращается из api. Я извлекаю эти объекты при запуске приложения и очищаю поле перед их добавлением.
Я пытался добавлять задержки и т. Д., Но Всегда возвращал false. Даже когда я предоставляю значение по умолчанию true, оно возвращает false. Любые предложения будут с благодарностью
Комментарии:
1. «public» может быть проблемным именем. Можете ли вы попробовать другой? Кроме того, есть ли вероятность, что сгенерированный код устарел (не обновляется)?
2. ах, вот оно что!! public было защищенным словом. Досадно, что для отображения этой ошибки не было. Большое вам спасибо!!
Ответ №1:
Проблема заключалась в том, что «public» было защищенным словом. Изменение имени решило проблему благодаря комментарию от @user:551269
Комментарии:
1. К вашему сведению, связанная с этим проблема с GitHub с более подробной информацией: github.com/objectbox/objectbox-java/issues/879
2. ах, спасибо! это очень полезная ссылка в этой проблеме GitHub docs.oracle.com/javase/tutorial/java/nutsandbolts /…