Enum支持Realm?

MJB*_*B22 15 java enums android realm

我正在开发一个Android应用程序和Realm,我需要为我的一个对象创建一个枚举属性; 但我在这篇文章中发现Realm还不支持enum.

我的目标是这样的:

public class ShuttleOption extends RealmObject {
    private int Id;
    private String Label;
    private ShuttleTypes OriginShuttleType;
}
Run Code Online (Sandbox Code Playgroud)

和我的枚举类(ShuttleTypes)对应:

HOME = 1;  
Run Code Online (Sandbox Code Playgroud)

WORK = 2;
Run Code Online (Sandbox Code Playgroud)

谁能建议我怎么做?

Chr*_*ior 31

您可以使用问题中描述的模式:https://github.com/realm/realm-java/issues/776#issuecomment-190147079

基本上将它保存为Realm中的String并将其转换为进出:

public enum MyEnum {
  FOO, BAR;
}

public class Foo extends RealmObject {
  private String enumDescription;

  public void saveEnum(MyEnum val) {
    this.enumDescription = val.toString();
  }

  public MyEnum getEnum() {
    return MyEnum.valueOf(enumDescription);
  }
}
Run Code Online (Sandbox Code Playgroud)


Nic*_*sco 5

如果您需要适用于Kotlin的解决方案,则可以使用以下方法:

open class Foo: RealmObject() {
    var enum: MyEnum
        get() { return MyEnum.valueOf(enumDescription) }
        set(newMyEum) { enumDescription = newMyEnum.name }
    private var enumDescription: String = MyEnum.FOO.name
}
Run Code Online (Sandbox Code Playgroud)

MyEnum 是@ChristianMelchior答案中声明的枚举。

值得一提的是,由于enum没有支持领域,因此不会持久存在于Realm中。无需@Ignore在其上使用注释