【发布时间】:2016-09-15 20:33:28
【问题描述】:
在Realm 中,为了使对象能够持久化,它必须实现RealmModel 或扩展RealmObject。使用其中一个有什么好处吗?
realm docs 中所说的只是:
扩展 RealmObject 基类的另一种方法是实现 RealmModel 接口并添加 @RealmClass 注解。
RealmObject 上所有可用的方法都可以通过静态方法使用。
【问题讨论】:
在Realm 中,为了使对象能够持久化,它必须实现RealmModel 或扩展RealmObject。使用其中一个有什么好处吗?
realm docs 中所说的只是:
扩展 RealmObject 基类的另一种方法是实现 RealmModel 接口并添加 @RealmClass 注解。
RealmObject 上所有可用的方法都可以通过静态方法使用。
【问题讨论】:
考虑到extending any non-RealmObject classes is not possible even if you're implementing RealmModel and adding @RealmClass,在我看来,你只会通过强迫自己使用RealmObject.isValid(realmObject) 而不是realmObject.isValid() 而获得额外的复杂性,而使用extends RealmObject 自然是免费获得的。
所以不,你应该坚持扩展RealmObject。使用 implements RealmModel 不会给您带来额外的好处。
【讨论】:
RealmModel 的唯一好处是您可以拥有自己的自定义isValid()。如果你扩展RealmObject,你自己的类中不能有这样的方法。
isManaged()和isLoaded()(和deleteFromRealm())也一样。
RealmObject 上的所有方法,因为我们将它们全部设为final。
import io.realm.kotlin.*,它为您提供了 RealmModel 上的所有方法,这些方法在 RealmObject 上。所以例如你可以myModel.deleteFromRealm()。