Класс отсутствует в схеме для этой области


Настройка проекта

  • Android studio 2.3.3
  • область 3.5.0

Источник

RealmController.java

public RealmController(Context context) {
    try {
        this.context = context;
        Realm.init(context);
        PrintLog("RealmController", "RealmController", "Init realm", LOG_LEVEL_INFO);
        realmInstance = Realm.getDefaultInstance();
        PrintLog("RealmController", "RealmController", "Getting realm instance", LOG_LEVEL_INFO);
    }
    catch (Exception err) {
        PrintLog("RealmController", "RealmController", "Error: " + err.getMessage(), LOG_LEVEL_ERROR);
    }
}

SellingData.java

public class SellingDataTable extends RealmObject {

    public Date todaysDate;
    public int sellingData;

    public Date getTodaysDate() {
        return todaysDate;
    }
    public void setTodaysDate(Date todaysDate) {
        this.todaysDate = todaysDate;
    }
    public int getSellingData() {
        return sellingData;
    }
    public void setSellingData(int sellingData) {
        this.sellingData = sellingData;
    }
}

Ожидаемое поведение

  • получить экземпляр области по умолчанию.

Фактическое поведение

Разобьется.

08-09 15:24:16.044 [I2maxMain] {Init} (preparing ui)
08-09 15:24:16.120 [RealmController] {RealmController} (Init realm)
08-09 15:24:16.129 [RealmController] {RealmController} (Error: The 'SellingDataTable' class is missing from the schema for this Realm.)
2 2

2 ответа:

Если вы создаете область с заданной схемой на устройстве, то если вы начинаете изменять схему (добавляя новые классы, добавляя новые поля, удаляя поля, добавляя/удаляя @Index, добавляя/удаляя @Required, изменяя тип и т. д.) тогда вам нужно либо предоставить миграцию (пример здесь ), либо указать deleteIfMigrationNeeded() в вашей RealmConfiguration.

Если вы добавили новый класс модели. Вам нужно удалить приложение и запустить его снова. Это решит проблему.