Realm ORM:如何处理地图?

时间:2016-02-10 09:50:53

标签: java android realm

我正在创建一个Android应用,我需要保留Map<String,MyClass>。 我刚刚开始使用Realm ORM,因为它支持一对一和一对多的枚举和列表。我还找到了一个字符串列表的解决方法(即我必须创建一个封装字符串的StringWrapper类。 但是,从documentation我理解,没有像RealmMap这样的简单方法,就像列表一样。 所以,我正在寻找坚持地图的最佳方式。 我目前的想法是用包含KeyValueObject(以前的地图密钥)和String的对象列表MyClass替换我的地图。与Map.Entry类似。 是否有其他解决方案不需要我出于技术原因重新编写域模型?

2 个答案:

答案 0 :(得分:19)

正如您所注意到的,Realm还不支持地图:https://github.com/realm/realm-java/issues/759

您可以使用模型类:

class MyData extends RealmObject {
    private RealmList<MyMapEntry> myMap;
}

class MyMapEntry extends RealmObject {
    private String key;
    private MyClass value;
}

假设您有一个名为MyData的{​​{1}}对象,并且您希望获取与myData相关联的值,则查询myKey可能会有用。

答案 1 :(得分:1)

好吧,如果您确实可以稍微重复一下持久层,那么最简单的解决方案就是不要使用Map<String

Map<String字面意思是特定字符串与一个对象相关联。只需将String作为RealmObject的一部分,就可以做同样的事情。然后你可以根据它进行查询。

因此,对字符串进行查询的任何RealmResults`都将包含一个元素,该元素将是所述映射的值。