Je crée un objet Realm dans Kotlin.
Objet du royaume:
open class PurposeModel(var _id: Long?,
var purposeEn: String?,
var purposeAr: String?) : RealmObject()
Lorsque je compile le code ci-dessus, j'obtiens cette erreur:
error: Class "PurposeModel" must declare a public constructor with no arguments if it contains custom constructors.
Je ne trouve aucune question à ce sujet dans Kotlin. Comment résoudre ça?
Pour effacer cette erreur, vous devez affecter des valeurs par défaut aux propriétés.
Modifiez l'objet de domaine comme ceci:
open class PurposeModel(
var _id: Long? = 0,
var purposeEn: String? = null,
var purposeAr: String? = null
) : RealmObject()
Maintenant, il va compiler.
Raison:
Lorsque la valeur par défaut non affectée deviendra les paramètres du constructeur, Realm a besoin d'un constructeur public sans arguments. Lorsque la valeur par défaut attribuée, elle deviendra les propriétés de la classe. Vous obtiendrez donc un constructeur vide par défaut et un code propre.
C'est pourquoi je préfère les définir comme ça
open class PurposeModel : RealmObject() {
@field:PrimaryKey
var id: Long? = null
var purposeEn: String? = null
var purposeAr: String? = null
}
Vous pouvez également utiliser plugin Kotlin no-arg qui génère un constructeur sans arg pour vous.
Erreur:
_id, purposeEn, purposeAr non initialisé
Solution
open class PurposeModel(
var _id: Long? = 0,
var purposeEn: String? = "",
var purposeAr: String? = ""
) : RealmObject()