Я написал статический класс, который автоматически увеличивает значение идентификатора RealmObject на 1.PrimaryKey «идентификатор» не установлен автоматический инкрементора
public class AutoIncrementKey {
public static int Next(Class<? extends RealmObject> c)
{
Realm realm = Realm.getDefaultInstance();
Number maxId = realm.where(c).max("id");
realm.close();
if(maxId == null)
{ // no object exists, so return 0
return 0;
}
return maxId.intValue() + 1;
}
}
Однако, когда я устанавливаю значение по умолчанию Идентификатор RealmObject как так :
@PrimaryKey private int id = AutoIncrementKey.Next(PresetSelect.class);
Не работает! В частности, при первом запуске для создания нового класса через realm.createObject (IExtendRealmObject.class) значение равно 0, но AutoIncrementKey.Next (...) возвращает id как 1!
Так идентификатор никогда не устанавливается в 1. Всегда 0, и пытается создать больше объектов заставляет его бросить об ошибке «индекс уже существует: 0»
Что дает?
Вызывается функция AutoIncrementKey.Next(). Он находит следующий ключ равным 1. Возвращаемое значение просто не выполняется.
Edit: Так что теперь я сумел создать более одного объекта в моем царстве, я нахожу, что установка идентификатора значение по умолчанию не единственная проблема.
Установка любого члена класса, расширяющего объект RealmObject со значением по умолчанию, НЕИСПРАВНО. С чем это связано?
Я дам этот выстрел прямо сейчас. Кроме того, нет оснований не использовать длинный идентификатор, но база данных будет содержать только около 1000 объектов, так как модель будет исправлена. 4 предустановки с 8 каналами, каждый по 32 диапазона. –
Итак, я просто не могу установить значения по умолчанию для членов объекта realm? Я делаю: private Float level = DEFAULT_LEVEL; для значения объекта Trim, и уровень всегда возвращает null независимо. –
Значение по умолчанию не поддерживается прямо сейчас. См. Https://github.com/realm/realm-java/issues/777 @MagicMarbles – beeender