Вы добавили новую модель в схему области, поэтому вам нужно перенести базу данных. Вы можете сделать это следующим образом:
public class RealmUtility {
private static final int SCHEMA_V_PREV = 1;// previous schema version
private static final int SCHEMA_V_NOW = 2;// change schema version if any change happened in schema
public static int getSchemaVNow() {
return SCHEMA_V_NOW;
}
public static RealmConfiguration getDefaultConfig() {
return new RealmConfiguration.Builder()
.schemaVersion(SCHEMA_V_NOW)
.deleteRealmIfMigrationNeeded()// if migration needed then this methoud will remove the existing database and will create new database
.build();
}
}
если вы не хотите удалять существующую базу данных и хотите добавить новую модель в существующую, сделайте так:
public class RealmMigrations implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
final RealmSchema schema = realm.getSchema();
if (oldVersion == 1) {
final RealmObjectSchema saveMessage =
schema.get("SaveMessage");
if(saveMessage==null){
saveMessage=realmSchema.create("SaveMessage");}
saveMessage.addField("mId", int.class);
// all field add here similarly
oldVersion++;
}
}
}
public static RealmConfiguration getDefaultConfig() {
return new RealmConfiguration.Builder()
.schemaVersion(SCHEMA_V_NOW)
.migration(new RealmMigrations())
.build();
}
Затем инициализируйте область следующим образом:
Realm realm = Realm.getInstance(RealmUtility.getDefaultConfig());