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
相关产品推荐
相关产品推荐

