Котлинский класс данных 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 Я согласен, что документы по свойствам неясны по теме