Niestety, nie mogę wypowiedzieć się na temat innych odpowiedzi, ale Chciałbym dodać do Vinicius` answer.
Po pierwsze, nie powinieneś otwierać nowej instancji dziedziny, szukając klucza podstawowego, zwłaszcza gdy ich nie zamykasz, ponieważ zwiększa to maksymalną możliwą liczbę deskryptorów plików.
Po drugie, chociaż jest to korzystne, nie należy mieć prymitywne typy (lub odpowiedniki Object) jak nullables (w Kotlin), a to dodaje redundantny wymóg, aby sprawdzić opcje dopuszczania wartości null.
Po trzecie, skoro używasz Kotlin, można po prostu określić metodę rozszerzenia do Realm
klasy, takie jak:
fun Realm.getNextId(model: RealmModel, idField : String) : Long
{
val count = realm.where(model::class.java).max(idField)
return count + 1L
}
Ponieważ wszystkie RealmObject
przypadki są RealmModel
, a nawet przedmioty, które nie są śledzone przez Realm wciąż jest instancjami RealmModel
, dlatego będzie dostępny tam, gdzie kiedykolwiek używasz klas związanych z rzeczywistością. odpowiednik Java byłoby:
static long getNextId(RealmModel object, Realm realm, String idField)
{
long count = realm.where(object.class).max(idField);
return count + 1;
}
Późno edit note: Lepiej nie za pomocą tej metody, jeśli masz do czynienia z danymi, które mogą pochodzić ze źródeł zewnętrznych, takich jak innych baz danych lub w internecie, bo to powodują kolizje między danymi w wewnętrznej bazie danych. Zamiast tego powinieneś użyć max([id field name])
. Zobacz poprzednie fragmenty, już je zmodyfikowałem, aby uwzględnić tę zmianę.
Czy możesz zwiększyć czytelność swojego posta? Co chcesz osiągnąć i co jest nie tak? – Mast
Jest oczywiste, że otrzymujemy dane za pomocą zapytania specjalnie ID elementu, więc moje pytanie brzmi: w jaki sposób mogę uzyskać moje obiekty z bazy danych za pomocą ID i dziedzina daje wszystkie ID, ta sama wartość = 0, dlaczego nie jest automatyczne przyrost! –