如何在Realm中存储枚举?
问题描述:
如何在使用Realm时存储Java枚举类?如何在Realm中存储枚举?
从他们documentation,好像境界还未支持存储枚举:
字段类型 领域支持以下字段类型:布尔,字节,短,ìnt,长,float,double,字符串,日期和字节[]。整数类型byte,short,int和long都被映射到Realm中的相同类型(实际上很长)。此外,模型关系还支持RealmObject和RealmList的子类。
也有类似的问题被问及Objective-C并得到了回答here。 Java还没有。
答
如果没有自定义方法,不幸的是目前有点麻烦,但是您可以存储字符串表示,并将其转换为enum。
public enum Foo {
FOO
}
// V1: Using static methods
public class Bar1 extends RealmObject {
private String enumValue;
// Getters/setters
// Static methods to handle the enum values
public static Foo getEnum(Bar1 obj) {
return Foo.valueOf(obj.getEnumValue())
}
public static Foo setEnum(Bar1 obj, Foo enum) {
return obj.setEnumValue(enum.toString());
}
}
// V2: Use a dummy @Ignore field to create getters/setters you can override yourself.
public class Bar2 extends RealmObject {
private String enumValue;
// Dummy field
@Ignore
private String enum;
public void setEnumValue(String enumValue) {
this.enumValue = enumValue;
}
public String getEnumValue() {
return enumValue;
}
public void setEnum(Foo foo) {
setEnumValue(foo.toString());
}
public Foo getEnum() {
return Foo.valueOf(getEnumValue());
}
}
+0
我想你忘记了静态方法的“静态” – EpicPandaForce
+0
谢谢,它已被修复。 –
Objective-C的最后一段中的链接实际上是Swift。这很好。 :-) –