Kotlin访问Firestore报错:No setter/field for isCreator found on class
Kotlin访问Firestore时is开头Boolean字段找不到setter/字段的解决办法
问题核心出在Kotlin对is前缀的Boolean属性的字节码生成规则上:
- 当你定义
var isCreator: Boolean时,Kotlin编译成Java字节码后,生成的setter方法是setCreator(),而不是Firestore默认期望的setIsCreator() - 而
admin这类非is开头的Boolean属性,生成的setter是setAdmin(),刚好和Firestore的查找规则匹配,所以能正常工作
给你三个可行的解决办法:
- 修改Firestore字段名:把文档里的
isCreator改成creator,和Kotlin生成的setter对应上 - 添加@PropertyName注解:在模型类的字段上显式指定Firestore的字段名,示例代码:
import com.google.firebase.firestore.PropertyName class YourModel { @PropertyName("isCreator") var isCreator: Boolean = false var admin: Boolean = false } - 手动编写符合规则的setter:给字段添加Firestore期望的setter方法,示例:
class YourModel { var isCreator: Boolean = false fun setIsCreator(value: Boolean) { isCreator = value } var admin: Boolean = false }
内容的提问来源于stack exchange,提问作者Olivér Raisz
相关产品推荐
相关产品推荐

