Kotlin Realm:如果类包含自定义构造函数,则必须声明没有参数的公共构造函数

Bhu*_* BS 7 android realm kotlin

我正在Kotlin中创建一个Realm对象.

领域对象:

open class PurposeModel(var _id: Long?,
                        var purposeEn: String?,
                        var purposeAr: String?) : RealmObject()
Run Code Online (Sandbox Code Playgroud)

当我编译上面的代码时,我收到此错误:

error: Class "PurposeModel" must declare a public constructor with no arguments if it contains custom constructors.
Run Code Online (Sandbox Code Playgroud)

我在Kotlin找不到与此相关的任何问题.我该如何解决这个问题?

Bhu*_* BS 19

要清除此错误,您必须为属性分配默认值.

像这样更改Realm对象:

open class PurposeModel(
    var _id: Long? = 0,
    var purposeEn: String? = null,
    var purposeAr: String? = null
) : RealmObject()
Run Code Online (Sandbox Code Playgroud)

现在它将编译.

原因:

当未分配的默认值将成为构造函数的参数时,Realm需要一个不带参数的公共构造函数.当分配默认值时,它将成为类的属性.因此,默认情况下您将获得空构造函数并清除代码.


Epi*_*rce 5

这就是为什么我更喜欢这样定义它们

open class PurposeModel : RealmObject() {
    @field:PrimaryKey
    var id: Long? = null
    var purposeEn: String? = null
    var purposeAr: String? = null
}
Run Code Online (Sandbox Code Playgroud)