Firebase @Exclude 与 kotlin 数据类
Posted
技术标签:
【中文标题】Firebase @Exclude 与 kotlin 数据类【英文标题】:Firebase @Exclude with kotlin data class 【发布时间】:2017-02-28 04:47:32 【问题描述】:我在 Kotlin 中有这个数据类(示例):
import com.google.firebase.database.Exclude
data class User(val name: String = "", @Exclude val age: Int = 0)
而且我不想将 age 属性保存在 firebase 中。 @Exclude 应该这样做,但它不起作用,仍然保存年龄。
有什么解决方法吗?
【问题讨论】:
从我读到的内容应该是一样的,但是在Exclude
前面加上“field:”有什么不同吗? data class User(val name: String = "", @field:Exclude val age: Int = 0)
不,没有任何区别,但 @get:Exclude 有效(感谢您找到它)。如果您想将其发布为答案,我会接受。
啊,现在你也提到它了。团队合作!
【参考方案1】:
其实你不需要只添加@get:Exclude
,但是你需要all 3 Exclude,
@Exclude @set:Exclude @get:Exclude.
我是为 imageUrl
和 providerId
做的
data class FirebaseChatModel(
@get:PropertyName("message")
@set:PropertyName("message")
var message: String = "",
@get:PropertyName("type")
@set:PropertyName("type")
var type: Int = 1,
@get:PropertyName("senderId")
@set:PropertyName("senderId")
var senderId: Int = 0,
@get:PropertyName("receiverId")
@set:PropertyName("receiverId")
var receiverId: Int = 0,
@Exclude @set:Exclude @get:Exclude var imageUrl: String? = "",
@Exclude @set:Exclude @get:Exclude var providerId: Int = 0
)
【讨论】:
【参考方案2】:将@Exclude
放置在属性上会针对其生成的字段而不是其生成的获取访问器方法。要执行后者,您需要在“Exclude”前面加上“get:”。例如:
data class User(val name: String = "", @get:Exclude val age: Int = 0)
更多详情请见Annotation Use-site Targets。
【讨论】:
以上是关于Firebase @Exclude 与 kotlin 数据类的主要内容,如果未能解决你的问题,请参考以下文章
在地图上同时显示多个用户的位置(Kotlin、Firebase 实时数据库)
[字体设计欣赏六]澳门设计师Tun Ho & Lua Kot的字体系列
android RecyclerView pinch zoom,ScaleGestureDetector&GridLayoutManager,with BigImageViewer,kotli