Firestore报No setter/field for about found on class警告如何解决
警告触发原因
Firestore在做云端文档数据到本地类的反序列化映射时,会逐一遍历文档返回的所有字段,和本地数据类的属性名做匹配。当前警告的核心触发原因是:云端存储的Article文档中存在名为about的字段,但本地定义的Article数据类仅声明了img、scientificName两个属性,没有匹配about的字段或对应setter方法,映射器无法为该字段找到赋值目标,就会输出这条提示。
这条警告属于非阻断性提示,不会造成程序崩溃,也不会影响已声明字段的正常解析,只是会自动跳过不匹配的about字段不做处理。
修复方案
可根据自身业务需求选择对应方案处理:
- 方案1:业务需要读取
about字段内容
直接在Article数据类中补充和云端字段名完全一致的属性即可,Kotlin的data class会自动生成符合映射要求的getter/setter,无需手动编写,补充后代码参考如下:data class Article( var img: String = "", var scientificName: String = "", // 新增匹配的about属性,设置默认值避免反序列化时因缺值报错 var about: String = "" ) - 方案2:业务不需要使用
about字段内容
可以直接忽略该警告,不需要额外修改代码,现有功能可正常运行。如果想彻底消除控制台警告,可以给数据类加上@IgnoreExtraProperties注解标记,映射器就不会对类中不存在的字段输出警告。 - 方案3:清理云端冗余字段
如果about字段属于废弃无用字段,可以直接登录Firestore控制台,找到对应集合下的文档,删除冗余的about字段,从数据源侧消除字段不匹配的问题,后续映射就不会再触发该警告。
注意:Firestore的类映射是大小写敏感的,后续新增属性时要保证本地属性名和云端字段名完全一致,否则会重复触发同类找不到字段的警告。
内容的提问来源于stack exchange,提问作者micinable
相关产品推荐
相关产品推荐

