我在 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找到任何与此相关的问题。我该如何解决这个问题?
答案 0 :(得分:13)
要清除此错误,您必须为属性指定默认值。
像这样更改Realm对象:
open class PurposeModel(var _id: Long? = 0,
var purposeEn: String? = null,
var purposeAr: String? = null) : RealmObject()
现在它将编译。
<强>原因:强>
当未分配默认值时,它将成为参数 构造函数,Realm需要一个没有参数的公共构造函数。 当分配默认值时,它将成为该属性 类。因此,默认情况下您将获得空构造函数并清除代码。
答案 1 :(得分:1)
这就是为什么我喜欢像这样定义它们
open class PurposeModel : RealmObject() {
@field:PrimaryKey
var id: Long? = null
var purposeEn: String? = null
var purposeAr: String? = null
}
答案 2 :(得分:0)
您也可以使用为您生成无参数构造函数的Kotlin no-arg plugin。
答案 3 :(得分:0)
错误:强>
_id,purposeEn,purposeAr not initialized
<强>解决方案强>
open class PurposeModel(
var _id: Long? = 0,
var purposeEn: String? = "",
var purposeAr: String? = ""
) : RealmObject()