Firestore Kotlin中如何读取数组内Map的取值?
解决Firestore读取嵌套Map值的崩溃问题
你崩溃的核心原因是直接从文档顶层数据里查找Horsepower,但这个字段实际嵌套在Cars子Map中,顶层根本不存在该Key,而getValue()方法在找不到对应Key时会直接抛出异常,导致应用崩溃。
正确的处理逻辑是先获取Cars这个Map对象,再从里面读取目标值,同时做好空安全防护:
Kotlin 示例代码
// 先获取顶层的Cars Map,用as?做安全类型转换 val carsMap = result.data?.get("Cars") as? Map<String, Any> // 从Cars Map中读取Horsepower,处理空值避免崩溃 val horsepowerValue = carsMap?.get("Horsepower")?.toString() ?: "暂无数据" // 赋值给TextView horsepowerTextView.text = horsepowerValue
关键注意事项
- 用
get()替代getValue():getValue()找不到Key时会抛出NoSuchElementException,而get()会返回null,更适配可能存在的字段缺失场景 - 安全类型转换:用
as?转换Map类型,避免因字段类型不匹配触发类型转换异常 - 空值兜底:通过Elvis运算符
?:设置默认值,确保TextView不会被赋值为null
内容的提问来源于stack exchange,提问作者EvanGrant1223
相关产品推荐
相关产品推荐

