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