Как мне исправить ошибку с занесением данных в базу данных?

Есть следующий код, который позволяет получить запрос из сети:

fun getCatalog(myCallback:OnRequestFinishedListener) {
    val network=getRetrofit(BASE_URL_PIXABAY).create(paxabayRequest::class.java).getScriptInfo(
        API_KEY_PIXABAY,"yellow+flowers","photo")
    network.enqueue(object : Callback<paxabayPOJO> {
        override fun onResponse(call: Call<paxabayPOJO>, response: Response<paxabayPOJO>) {
            val res= response.body()?.hits
            var count=0
            while(count<10) {
                items.add(hitPOJOinItemCatalog(res?.get(count)))
                count++
            }
            myCallback.loadFromOnResponse(items)
            Log.d("listCATALOG",items.toString())

        }
        override fun onFailure(call: Call<paxabayPOJO>, t: Throwable) {
            //TODO обработать неудачный запрос
        }
    })
    Log.d("catalogInNetwork",items.toString())
}


Данную функцию я вызываю в своем презентере я использую следующую функцию для обратного вызова первой функции и пытаюсь записать полученные данные в Room(всё действо в ветке else)

fun loadCatalog() {
        if (sp.contains(IS_A_FIRST_LOAD) && sp.getString(IS_A_FIRST_LOAD,"def")!=null) {
            //загружаю из бд
        }
        else {
                val network=network.getCatalog(object : OnRequestFinishedListener {
                    override fun loadFromOnResponse(res: MutableList<itemCatalogs?>) {
                        Log.d("res",res.toString())
                        CoroutineScope(Dispatchers.IO).launch {
                            db.getDb().itemCatalogsDao()?.insert(itemCatalogs(0, "1", "#", "$")) //НЕ РАБОТАЕТ!
                            //db.addCatalogInBD(res) //добавление полученных данных в бд
                        }
                    }
                })
            
                sp.edit().putString(IS_A_FIRST_LOAD, NOT_FIRST).apply()
            }
        }

Проблема в следующем - данные в Log.d("res",res.toString()) видны,то они категорически отказываются записываться в Room. Причем я вешал корутину для фоновой работы и сверху запроса, сразу после else и внутри. и даже вместе. Но запись в Room не идёт. Запись проходит вне метода loadFromOnResponse. Прощу помощи, так как казалось бы такое простое действие как достать данные из onResponse ретрофита тратят столько времени и не должны вызывать такие трудностей.


Ответы (0 шт):