【问题标题】:Add generated value to a RealmObject将生成的值添加到 RealmObject
【发布时间】:2016-07-02 12:47:25
【问题描述】:

我在 Realm 中创建了一个模型,如下所示:

 
open class Contact() : RealmObject() {

    @PrimaryKey
    @Required
    open var id: String = ""

    @Required
    @Index
    open var firstName: String = ""
    @Required
    @Index
    open var lastName: String = ""
    @Required
    @Index
    open var fullName: String = ""

    ...
}
 

更新对象时如何生成fullName

我知道,例如在 CoreData 中,当willSave:_ 被调用时,你可以改变一个属性。这对 Realm 有什么作用?

我尝试提供一个 getter,但这会破坏 RealmObject 的行为。

谢谢!

【问题讨论】:

  • 如果 fullName 是 firstName 和 lastName 的串联,为什么要首先存储它而不是从其他两个字段计算它?如果不是,那你到底为什么要达到?
  • fullName 并不总是用作串联。这是一种搜索整个名称的方法,例如在“搜索全部”框中。在其余的实现中,firstName 和 lastName 总是分开使用。

标签: realm kotlin


【解决方案1】:

您可以使用custom setters in RealmObjects

@Required
@Index
open var firstName: String = ""
    set(value) {
        field = value
        updateFullName()
    }

@Required
@Index
open var lastName: String = ""
    set(value) {
        field = value
        updateFullName()
    }

private fun updateFullName() {
    fullName = "$firstName $lastName"
}

@Required
@Index
open var fullName: String = ""

【讨论】:

  • 太棒了,这行得通!忘了说了,这个我也试过了,但是不知道field = value,所以现在可以了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多