我正在Kotlin中创建一个Realm对象。
领域对象:
open class PurposeModel(var _id: Long?,
var purposeEn: String?,
var purposeAr: String?) : RealmObject()
当我编译上面的代码时,我得到了这个错误:
error: Class "PurposeModel" must declare a public constructor with no arguments if it contains custom constructors.
我在Kotlin中找不到任何与此相关的问题。我该如何解决这个问题?
6条答案
按热度按时间holgip5t1#
要清除此错误,必须为属性指定默认值。
像这样更改领域对象:
现在它将编译。
原因:
当默认值没有赋值时,它将成为构造函数的参数,Realm需要一个没有参数的公共构造函数。当默认值赋值时,它将成为类的属性。所以你会得到空的构造函数和干净的代码。
n6lpvg4x2#
这就是为什么我更喜欢这样定义它们
vm0i2vca3#
我在我的Ktor服务器上使用Realm,你需要提供一个带有默认值的空构造函数。
没有它,我得到和错误:
aor9mmx14#
错误:
_id、目的En、目的Ar未初始化
解决方案
olhwl3o25#
对我来说,解决方案是添加
abstract
关键字,下面是我的工作代码,删除
abstract
关键字会使类中的测试用例失败。老实说,我现在不明白为什么。t3psigkw6#
您还可以使用Kotlinno-arg插件,它会为您生成一个no-arg构造函数。