我正在尝试向“房间”数据库添加一个“图片”字段,其中包含一个名为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个参数。

最佳答案

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

话虽如此,您的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实现。

09-27 12:11