将Android Realm.io实例迁移到较新的模式时,我在迁移实现中提供了迁移步骤:
RealmConfiguration config = new RealmConfiguration
.Builder(this)
.schemaVersion(SCHEMA_VERSION)
.migration(new Migration())
.build();
Run Code Online (Sandbox Code Playgroud)
我想要在实际的迁移代码中做什么,我想回溯到deleteRealmIfMigrationNeeded较旧的模式版本.
有没有办法做到这一点?我试图这样做,deleteAll()但这似乎不起作用,因为有些人从旧版本的应用程序更新正在获得Realm验证错误.
public class Migration implements RealmMigration {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
if (oldVersion < 105) {
realm.deleteAll();
return;
}
//handle newer schema versions
}
}
Run Code Online (Sandbox Code Playgroud)
您可以尝试以动态模式打开Realm并询问它的版本.DynamicRealms不会触发迁移:
RealmConfiguration config = new RealmConfiguration
.Builder(this)
.schemaVersion(SCHEMA_VERSION)
.migration(new Migration())
.build();
// Use DynamicRealm to find version and delete it if it is too old
DynamicRealm dRealm = DynamicRealm.getInstance(config);
boolean delete = dRealm.getVersion() < 42;
dRealm.close();
if (delete) {
Realm.deleteRealm(config);
}
Realm realm = Realm.getInstance(config);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
989 次 |
| 最近记录: |