Kotlin Realm: クラスにカスタム コンストラクターが含まれている場合、引数のないパブリック コンストラクターを宣言する必要があります 質問する

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 でこれに関連する質問が見つかりません。どうすれば解決できますか?

ベストアンサー1

このエラーをクリアするには、プロパティにデフォルト値を割り当てる必要があります。

Realm オブジェクトを次のように変更します。

open class PurposeModel(
    var _id: Long? = 0,
    var purposeEn: String? = null,
    var purposeAr: String? = null
) : RealmObject()

これでコンパイルされます。

理由:

デフォルト値が割り当てられていない場合は、それがコンストラクタのパラメータになります。Realm には引数のないパブリック コンストラクタが必要です。デフォルト値が割り当てられている場合は、それがクラスのプロパティになります。そのため、デフォルトで空のコンストラクタが得られ、コードがクリーンになります。

おすすめ記事