web-dev-qa-db-ja.com

RealmObjectのKotlinデータクラス

KotlinとRealmを使用してデータクラスを記述しています

data class AuthToken(val register: Boolean,
                     val token: String,
                     val tokenSecret: String,
                     val user: AuthUser)

データをdbに保存する必要があるので、Realmを使用して保存します。しかし、ご存知のように、クラスをRealmに保存する場合、AuthTokenクラスはRealmObjectを拡張する必要があります。

それが問題だ、とKotlinはデータクラスがクラスを拡張できないと言います。したがって、データクラスをあきらめ、通常のKotlinクラスをモデルとして使用するだけで、別の質問が発生します。

Kotlinクラスにはゲッターもセッターもありません。私たちが知っているように、Realmクラスはすべてのプロパティをプライベートに設定し、ゲッターとセッターを書き込む必要があります。

今私は問題を解決する方法を考えています。

30
Allen Vork

現在、レルムはデータクラスをサポートしていません。 KotlinでRealm互換モデルクラスを作成する方法の例は、次の場所にあります。 https://github.com/realm/realm-Java/tree/master/examples/kotlinExample/src/main/kotlin/io/realm/examples/kotlin/model

public open class Person(
        @PrimaryKey public open var name: String = "",
        public open var age: Int = 0,
        public open var dog: Dog? = null,
        public open var cats: RealmList<Cat> = RealmList(),
        @Ignore public open var tempReference: Int = 0,
        public open var id: Long = 0
) : RealmObject() {
36

anyクラスのKotlinプロパティには、ゲッターとセッターがあります。だから私はあなたのコードがあなたが提案したとおりに機能するはずだと信じています(data修飾子なしで)。

https://kotlinlang.org/docs/reference/data-classes.html#data-classeshttps://kotlinlang.org/docs/reference/Java-to-kotlin- interop.html#properties

追伸プロパティに関するドキュメントが主題について不明確であることに同意します

1
voddan