アプリには Realm を使用します。私たちのアプリはベータ版がリリースされました。次に、レルム オブジェクトの 1 つにフィールドを追加します。だから私は RealmMigration を書かなければならず、私もそれを書きました。ここでの質問は、このレルムの移行をアプリに適用する方法です。何かしたいときはいつでも Realm.getInstance() を使用してレルム インスタンスを取得します。Realm.getInstance() は毎回アプリ全体で使用されていることを思い出してください。Realm データベースにアクセスしたいのです。
それで、この移行を適用する方法について少し質問がありますか? どんな手がかりも役に立ちます。ありがとう。
私のRealmMigrationは次のとおりです。
public class RealmMigrationClass implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
if(oldVersion == 0) {
RealmSchema sessionSchema = realm.getSchema();
if(oldVersion == 0) {
RealmObjectSchema sessionObjSchema = sessionSchema.get("Session");
sessionObjSchema.addField("isSessionRecordingUploading", boolean.class, FieldAttribute.REQUIRED)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.set("isSessionRecordingUploading", false);
}
});
sessionObjSchema.setNullable("isSessionRecordingUploading",false);
oldVersion++;
}
}
}
}
public class Session extends RealmObject {
@PrimaryKey
private String id;
@Required
private Date date;
private double latitude;
private double longitude;
private String location;
private String note;
private String appVersion;
private String appType;
private String deviceModel;
private HeartRecording heart;
private TemperatureRecording temperature;
private LungsRecording lungs;
@NotNull
private boolean isSessionRecordingUploading;
private boolean sessionInfoUploaded;
private boolean lungsRecordingUploaded;
private boolean heartRecordingUploaded;
}
質問を短くするために、RealmObject から Getter と Setter を削除しました。以前のアプリをアンインストールせずにアプリを再インストールしようとすると、例外が発生しました。ご意見をお聞かせください。