You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库数据操作报错:+=操作出现接收者类型不匹配

解决Firebase实时数据库整数自增的类型不匹配问题

你的问题核心出在三个点:

  • it.child("Number").value返回的是Any?类型,用==判断类型是错误的,要改用is关键字检查对象实际类型
  • 未对number做类型强转,编译器无法识别它是数值类型,导致+=操作无法执行
  • 原代码仅完成了取值和自增逻辑,缺少将更新后的值写回数据库的步骤

修正后的完整代码如下:

val database = FirebaseDatabase.getInstance().getReference("Texas")
database.child("Texas").get().addOnSuccessListener { snapshot ->
    if (snapshot.exists()) {
        val numberValue = snapshot.child("Number").value
        when (numberValue) {
            is Int -> {
                val updatedNumber = numberValue + 1
                database.child("Texas").child("Number").setValue(updatedNumber)
            }
            is Long -> {
                val updatedNumber = numberValue + 1
                database.child("Texas").child("Number").setValue(updatedNumber)
            }
            else -> {
                Log.e(TAG, "Number字段不是整数类型")
            }
        }
    } else {
        Log.e(TAG, "指定节点不存在")
    }
}.addOnFailureListener { exception ->
    Log.e(TAG, "读取数据失败: ${exception.message}")
}

额外说明:

  • 用when语句更清晰地处理Int和Long两种常见数值类型
  • 自增完成后通过setValue()将新值同步回数据库
  • 修正了错误日志内容,避免使用未定义的geofenceTransition变量,让日志信息更贴合实际场景

内容的提问来源于stack exchange,提问作者Izak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 10:13:29