我有这门课:
data class ProjectFile(val uri: Uri, val name: String)
我有另一个包含它的类,并保存在Room数据库中。
@TypeConverters(Converters::class)
@Entity(tableName = "projects")
data class Project(
@PrimaryKey
@ColumnInfo(name = "id")
var id: String = "",
@ColumnInfo(name = "uid")
var uid: String? = "",
@ColumnInfo(name = "name")
var name: String = "",
@ColumnInfo(name = "businessId")
var businessId: String?,
@ColumnInfo(name = "image")
var image: String?,
@ColumnInfo(name = "tasks")
var tasks: List<Task> = ArrayList(),
@ColumnInfo(name = "managers")
var managers: List<Person> = listOf(),
@ColumnInfo(name = "files")
var files: List<ProjectsViewModel.ProjectFile> = listOf()
我不断地遇到这样的错误:
java.lang.RuntimeException:无法调用无参数的私有Android.Net.URI()
它无法在Converters文件中将对象“ProjectFile”转换为字符串。 我该怎么做才能修好它? 谢了。
URI
类的构造函数是私有的,是一个抽象类。 它尝试使用反射API
为URI
类创建一个新对象(我们不能为抽象类创建对象)。 因此最好将uri对象的类型更改为string
,而不是uri
。
data class ProjectFile(val uri: String, val name: String)