【问题标题】:Realm & Kotlin access field in variable变量中的领域和 Kotlin 访问字段
【发布时间】:2017-11-08 16:56:41
【问题描述】:

我有以下情况:

我通过 Retrofit2 和 GSON 获得了一些我不想完全保存在领域数据库中的数据。但我需要稍后访问该模型。

这是模型:

open class Notification() : RealmObject() {

    @PrimaryKey var pushNotificationId: Long = -1
    var date: Date = Date()

    var apsRaw: String = ""
    @Ignore var aps: Aps? = null
        get() = field ?: Gson.getInstance().fromJson(apsRaw, Aps::class.java)
        private set

open class Aps(var message: String = "",
               var category: String = "")

我想要实现的是,仅将apsRaw 字符串保存在领域中(以避免有另一个表'Aps')但在运行时我想使用Aps 实例方便的原因。所以当从领域加载它时,如果它之前没有被初始化,我想初始化它。

这样我每次都调用 Gson 转换器,因为通过field 访问领域总是返回null

有什么建议吗?

【问题讨论】:

    标签: java android gson realm


    【解决方案1】:

    怎么样

    @Ignore var aps: Aps? = null
        get() {
            if(field == null && "" != appsRaw) {
                field = Gson.getInstance().fromJson(apsRaw, Aps::class.java)
            }
            return field
        }
        private set
    

    【讨论】:

    • 好吧,由于领域魔法,字段仍然会在 getter 中始终为 null
    • 为什么会这样?这是一个被忽略的字段。
    • 错了。你是对的..我完全忘记分配“字段”以避免重新gson-izing。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多