Android 我明白了吗?我说错了吗?(更新或插入房间数据库时出现PrimaryKey错误)

Android 我明白了吗?我说错了吗?(更新或插入房间数据库时出现PrimaryKey错误),android,database,kotlin,key,let,Android,Database,Kotlin,Key,Let,此函数如下所示 口述 如果它存在,它会将amount属性增加1,并在db中更新,并从uiscope中返回-从函数中返回 当getDictWord返回null时,它将创建一个newDictWord并将其添加到db中,然后离开协同路由范围和函数 没有 因为我得到了“android.database.sqlite.sqliteconstraintextException:唯一约束失败:DictWord.name(代码1555 sqlite\u constraint\u PRIMARYKEY)” 不时地

此函数如下所示

口述 如果它存在,它会将amount属性增加1,并在db中更新,并从uiscope中返回-从函数中返回 当getDictWord返回null时,它将创建一个newDictWord并将其添加到db中,然后离开协同路由范围和函数 没有

因为我得到了“android.database.sqlite.sqliteconstraintextException:唯一约束失败:DictWord.name(代码1555 sqlite\u constraint\u PRIMARYKEY)” 不时地

   fun addOrIncreaseDictWordAmount(dictWord: String) {
        uiScope.launch {
            userDatabaseDao.getDictWord(dictWord)?.let {
                it.amount += 1
                userDatabaseDao.updateDictWord(it)
                return@launch
            }
            // adds the strain to the AddNew dropDown list
            val newDictWord = DictWord(name = dictWord)
            userDatabaseDao.insertDictWord(newDictWord)
        }

关于<代码>的初始问题。让<代码>语法

此语法将使用一个可为空的值(在您的示例中是getDictWord(dictWord)的返回)。 如果该值不为null,则将传递到附加块中,该值将作为
it
传递到块中,并保证在闭包的其余部分不为null。 如果该值为null,它将完全跳过该闭包

至于您收到的间歇性错误,根据您提供的信息,我认为您的解决方案将包括以下给出的答案:

如果您能够提供更多相关日志和信息,我很乐意编辑和改进此答案,以解决您的问题