Realm ORM: cómo tratar con Maps?
Estoy creando una aplicación de Android y necesito persistir un Map<String,MyClass>
. Acabo de empezar a usar Realm ORM , ya que soporta uno a uno y uno a muchos, enumeraciones y listas. También he encontrado una solución para las listas de cadenas (es decir, tengo que crear una clase StringWrapper encapsular una cadena.Sin embargo, a partir de la documentación entiendo que no hay manera fácil como RealmMap
, como ocurre para las RealmMap
lo tanto, estoy buscando La mejor manera de persistir un mapa Mi idea actual es reemplazar mi mapa con una lista de objetos KeyValueObject
encapsula una String
(la antigua clave de mapa) y una Map.Entry
igual que Map.Entry
alguna otra solución que no necesita Yo para volver a trabajar el modelo de dominio por razones tecnológicas?
- Generar error con Realm
- ¿Manera apropiada de despejar la tabla / la base de datos del reino?
- Cómo hacer una copia de seguridad de Realm DB en Android antes de eliminar el archivo Realm. ¿Hay alguna manera de restaurar el archivo de copia de seguridad?
- Cómo cerrar el reino abierto por Realm.getDefaultInstance?
- ORDEN POR Fecha - Realm (Android)
- Java Realm obtiene el último elemento insertado
- Borrar la base de datos predeterminada de Android Realm
- Error irrecuperable. Mremap (): Falló: Fuera de memoria en la línea 188 io_realm_internal_SharedGroup.cpp
- Cómo utilizar Realm asObservable con el operador concat () de RxJava?
- RealmMigrationNeededException al cambiar el modelo de Realm
- Crear un objeto autónomo del reino en android
- Realm: Cómo consultar con campo muchos a muchos
- El objeto no es parte del esquema para este reino
Como se nota, Realm aún no admite mapas: https://github.com/realm/realm-java/issues/759
Puede utilizar las clases de modelo:
class MyData extends RealmObject { private RealmList<MyMap> myMap; } class MyMap extends RealmObject { private String key; private MyClass value; }
Digamos que tienes un objeto MyData
llamado myData
y deseas buscar el valor asociado a myKey
, la consulta MyClass myClass = myData.getMyMap().where().equalTo("key", myKey).firstFirst()
puede ser útil.
Bueno, si usted tiene el lujo de volver a trabajar la capa de persistencia un poco, entonces la solución más simple es no utilizar un Map<String
en absoluto.
Un Map<String
significa literalmente que una String en particular está asociada con un objeto. Usted puede hacer lo mismo sólo por tener esa cadena ser parte de su RealmObject. A continuación, puede realizar consultas basándose en eso.
Así que cualquier RealmResults` con una consulta para la cadena contendrá un elemento, y ese elemento será el valor de dicho mapa.