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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:20:25