gpt4 book ai didi

android - 房间如何转换定制对象

转载 作者:太空宇宙 更新时间:2023-11-03 13:40:59 26 4
gpt4 key购买 nike

我是 Room 的新手,我不明白我应该怎么做。我有一个实体 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 表是否制作精良。

欣赏

最佳答案

您需要做的是告诉 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 关于您的 TypeConverter

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

就是这样。

关于android - 房间如何转换定制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52008883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com