Котлинский класс данных RealmObject

Я использую Kotlin и Realm, чтобы написать класс данных

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

Я должен сохранить данные в БД, поэтому я использую Realm для его сохранения. Но, как мы знаем, если я хочу сохранить класс в Realm, AuthToken класс должен расширяться RealmObject,

Это проблема, говорит Котлин, классы данных не могут расширять классы. поэтому я отказываюсь от класса данных, просто используя обычный класс Kotlin в качестве модели, тогда возникает другой вопрос:

У класса Kotlin нет геттера или сеттера. Как мы знаем, класс Realm должен установить все свойства private и написать getter и setter.

Теперь мне интересно, как решить проблему.

2 ответа

Решение

В настоящее время Realm не поддерживает классы данных. Вы можете увидеть пример того, как написать классы совместимых с Realm моделей в Kotlin здесь: 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() {

Любое свойство Kotlin в любом классе имеет геттер и сеттер. Поэтому я считаю, что ваш код должен работать так, как вы сами предложили (без data модификатор).

https://kotlinlang.org/docs/reference/data-classes.html https://kotlinlang.org/docs/reference/java-to-kotlin-interop.html

PS Я согласен, что документы по свойствам неясны по теме

Другие вопросы по тегам