Ho un set di tipi diversi di oggetti persistenti nel Realm Database. Ora voglio interrogare certi tipi di oggetti compresi tutti i campi di quell'oggetto. Il metodo che ho scritto qui sotto è quello di ottenere tutti i campi dichiarati dell'oggetto e iterare sui campi per verificare se la stringa di query fornita è contenuta.Query In Realm Database: Trova tutti gli oggetti contenenti stringa di query
Funziona correttamente per i tipi di campi stringa ma genera java.lang.IllegalArgumentException: Field 'documentCompletionStatus': type mismatch. Was STRING, expected INTEGER.
per valori interi poiché il mio oggetto query di ricerca è stringa. Salto i valori Non String per ora come soluzione alternativa, ma sono curioso di sapere se è possibile cercarli in tutti i campi.
Ad esempio, se l'utente desidera cercare un valore intero che ha come target il campo "Età" degli Oggetti, non riesco a farlo funzionare in questo modo.
public <T extends RealmObject> List<T> searchDatabase(Class<T> clazz, String searchQuery) {
/* Begin Query */
RealmQuery<T> query = realmDatabase.where(clazz).beginGroup();
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
/* Skip NON-String Values */
if (!fields[i].getType().equals(String.class)) {
continue;
}
if (i == 0) {
query.contains(fields[i].getName(), searchQuery, false);
} else {
query.or().contains(fields[i].getName(), searchQuery, false);
}
}
/* Return All Objects Found */
return query.endGroup().findAll();
}
Grazie Christian, questo è quello che sto facendo ora. Ma pensavo che potesse esserci un modo per farlo nel Reame stesso. Ragazzi avete in programma di avere una sorta di metodo di query che possiamo interrogare in tutti i campi? qualcosa come 'query.containsAll (searchQuery)', indipendentemente dal nome del campo. – osayilgan
Al momento non abbiamo piani, ma sentitevi liberi di creare una richiesta di funzionalità su GitHub. In questo caso è più facile discutere del caso d'uso esatto ed è più facile vedere se anche gli altri sono interessati a tale funzionalità. –