如何在包含不同自定义属性的类上使用TypeConverter?

时间:2018-10-06 10:12:57

标签: java android android-room

我正在尝试向“房间”数据库添加一个“图片”字段,其中包含一个名为MyPicture的自定义对象,该对象具有以下属性。

private String id;
private User user; //Custom object
private Urls urls; //Custom object
  • 类型转换器仅接收一个参数。因此,我不知道该如何转换此类,因此可以将其添加到数据库中,因为此类的构造函数需要三个参数。

  • 我还为Urls和User类创建了类型转换器。那是对的吗?

    public class MyPictureTypeConverter {
    
        @TypeConverter
        public static MyPicture toMyPicture
              (String id, Urls urls, User user) {
            return id == null ? null : new 
                                          MyPicture(id, urls, user);
        }
    
        @TypeConverter
        public static String toString(MyPicture myPicture) {
            return myPicture == null ? null : myPicture.getId();
        }
    }
    

这是我想到的主意。但这是不对的,因为在编译时我得到了这个

  

错误:类型转换器必须接收1个参数。

1 个答案:

答案 0 :(得分:1)

我认为这应该使用多个具有关系的表。

话虽如此,您的TypeConverter对看起来像:

public class MyPictureTypeConverter {

    @TypeConverter
    public static MyPicture toMyPicture(String stringified) {
        return MyPicture.createFromString(stringified);
    }

    @TypeConverter
    public static String toString(MyPicture myPicture) {
        return myPicture.stringify();
    }
}

MyPicture上,您将实现:

  • 一种stringify()方法,可将MyPicture转换为String表示形式,例如JSON

  • 一种createFromString() static方法,该方法获取上一个stringify()调用的结果,对其进行解析,然后使用该数据创建一个MyPicture实现方式