【发布时间】:2017-08-25 00:01:42
【问题描述】:
在我的 android 应用程序中,我正在尝试使用 Realm 存储我的数据,我的数据结构如下所示。
这是CrimeDatabase 对象的列表。 CrimeDatabase 有两个属性:Date 和 HashMap<LatLng, CrimeIncident>。 HashMap 的键是 LatLng,它存储犯罪的坐标,CrimeIncident 是我的自定义类对象,它存储其他信息。所以简而言之,我的数据结构 visually 看起来像这样:
DATE 08/01/2017
- HashMap<LatLng, CrimeIncident>
- LatLng: 39.9526° N, 75.1652° W
- CrimeIncident: Address, Time, CrimeType
- HashMap<LatLng, CrimeIncident>
- LatLng: 39.9530° N, 75.1648° W
- CrimeIncident: Address, Time, CrimeType
DATE 08/02/2017
- HashMap<LatLng, CrimeIncident>
- LatLng: 39.9533° N, 75.1659° W
- CrimeIncident: Address, Time, CrimeType
- HashMap<LatLng, CrimeIncident>
- LatLng: 39.9524° N, 75.1630° W
- CrimeIncident: Address, Time, CrimeType
下面是我的代码。我遵循将CrimeDatabase对象包装在RealmList中的方法,来自this answer
public class CrimeRealmObject extends RealmObject {
public RealmList<CrimeDatabase> crimeMap;
}
public class CrimeDatabase extends RealmObject {
private Date date;
private HashMap<LatLng, CrimeIncident> myHashMap;
}
Realm 甚至不允许我将 HashMap 放入 CrimeDatabase 对象中。我什至尝试创建一个带有键/值属性的RealmHashMap 类,但它抛出了一个错误,说不支持LatLng。
关于如何完成这项工作的任何想法?谢谢!
【问题讨论】:
-
Map不受 Realm 支持。有关解决方法,请参阅 stackoverflow.com/questions/35311755/…。 -
我知道这一点,我已经尝试过这个答案。请阅读我的问题的下半部分。
-
如果不支持 LatLng,如何创建一个具有双重属性的对象(同时用于纬度和经度)?您可以稍后创建一个方法,以便稍后从双属性创建一个 LatLng 对象。
-
@ParthBhoiwala 将
@Ignore放在您的myHashMap上,让领域忽略它。 realm.io/docs/java/latest/#ignoring-properties