Комната, как я могу конвертировать изготовленный на заказ объект - PullRequest
0 голосов
/ 24 августа 2018

Я новичок в комнате, и я не понимаю, как я должен идти по этому поводу.У меня есть сущность Movie и другая сущность с именем ÙpcomingMovies.

    @Entity
    public class Movie {

        @PrimaryKey
        @NonNull
        public String id;

        @ColumnInfo
        public String name;

        @ColumnInfo
        public String title;
    }

    @Entity
    public class UpcomingMovies {

        @PrimaryKey(autoGenerate = true)
        public int id;

        @ColumnInfo
        public Movie movie;
    }

Итак, я уже знаю, что у Room есть проблема с преобразованием Объектов, но я до сих пор не видел, как преобразовать пользовательский с TypeConverter.Возможно, я что-то усложняю, но может ли кто-нибудь помочь мне решить эту проблему?Я даже не уверен, что мой стол UpcomingMovies хорошо сделан.

Ценю

1 Ответ

0 голосов
/ 24 августа 2018

Что вам нужно сделать, это сообщить Room, как преобразовать ваш класс в тип, который он умеет хранить, в большинстве случаев это может быть строковое представление.

Сначала создайте класс для ваших TypeConverters ивнутри него объявите функцию, которая может преобразовывать ваш тип в тип и обратно, в который вы хотите, чтобы Room сохранял его.Не забудьте аннотировать эти функции.

class MyTypeConverters {

@TypeConverter
fun appToString(app: App): String = Gson().toJson(app)

@TypeConverter
fun stringToApp(string: String): App = Gson().fromJson(string, App::class.java)

}

Тогда все, что вам нужно сделать, это сообщить Room о ваших преобразователях типов, когда вы объявите свою базу данных

@TypeConverters(MyTypeConverters::class)
abstract class AppDatabase : RoomDatabase() {
..DAO declarations
}

Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...