Purtroppo, non posso commentare le altre risposte, ma Mi piacerebbe aggiungere a Vinicius` answer.
primo luogo, non si dovrebbe aprire una nuova istanza regno, quando alla ricerca di chiave primaria, soprattutto quando non li chiude, come questo aggiunge al conteggio massimo possibile descrittore di file.
secondo luogo, anche se questo è una preferenza, si dovrebbe non avere tipi primitivi (o equivalenti) come oggetto nullables (in Kotlin), come questo aggiunge requisito ridondante per controllare nullability.
In terzo luogo, dal momento che si sta utilizzando Kotlin, si può solo definire un metodo di estensione per Realm
di classe, come ad esempio:
fun Realm.getNextId(model: RealmModel, idField : String) : Long
{
val count = realm.where(model::class.java).max(idField)
return count + 1L
}
Dal momento che tutte le istanze sono RealmObject
RealmModel
, e anche oggetti che non sono monitorati dal Il reame sono ancora le istanze RealmModel
, quindi sarà disponibile ovunque tu usi le classi relative al tuo reame. Java equivalente sarebbe:
static long getNextId(RealmModel object, Realm realm, String idField)
{
long count = realm.where(object.class).max(idField);
return count + 1;
}
tardo modifica nota: È meglio non utilizzare questo approccio se hai a che fare con i dati che potrebbero provenire da fonti esterne, come altri database o sul web, perché questo causare collisioni tra i dati nel database interno. Invece dovresti usare max([id field name])
. Vedi i frammenti precedenti, li ho già modificati per accogliere questa modifica.
la prego di aumentare la leggibilità del tuo post? Cosa vuoi raggiungere e cosa non va? – Mast
È chiaro che otteniamo dati utilizzando query appositamente ID di elemento, quindi la mia domanda è come posso ottenere i miei oggetti dal database usando ID e realm fornisce tutti gli ID, lo stesso valore = 0, perché non è Incremento automatico! –