Gre*_*ggz 7 android android-room
我是 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;
}
Run Code Online (Sandbox Code Playgroud)
所以我已经知道 Room 在转换对象时有问题,但我仍然没有看到如何使用TypeConverter. 可能我把事情复杂化了,但有人可以帮我解决这个问题吗?我什至不确定我的 UpcomingMovies 表是否制作精良。
欣赏它
Iva*_*oll 10
您需要做的是告诉 Room 如何将您的类转换为它知道如何存储的类型,在大多数情况下,这可以是 String 表示。
首先为您的 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)
}
Run Code Online (Sandbox Code Playgroud)
然后你需要做的就是在你声明你的数据库时告诉 Room 你的 TypeConverters
@TypeConverters(MyTypeConverters::class)
abstract class AppDatabase : RoomDatabase() {
..DAO declarations
}
Run Code Online (Sandbox Code Playgroud)
就是这样。
| 归档时间: |
|
| 查看次数: |
2052 次 |
| 最近记录: |