Mak*_*kov 5 java android realm realm-migration
添加对象后得到不同的异常.
怎么了?
1 - MainActivity.java
RealmConfiguration realmConfiguration =
new RealmConfiguration.Builder(context)
.build();
Realm.setDefaultConfiguration(realmConfiguration);
Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmTestObjectOne testObjectOne = new RealmTestObjectOne();
testObjectOne.setValue(value);
realm.copyToRealmOrUpdate(testObjectOne);
}
});
Run Code Online (Sandbox Code Playgroud)
2 - RealmTestObjectOne.java
public class RealmTestObjectOne extends RealmObject {
@PrimaryKey
private int key = 1;
private String value;
public RealmTestObjectOne() {
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Run Code Online (Sandbox Code Playgroud)
3 - 构建并运行
4 - 添加RealmTestObjectTwo.java 与RealmTestObjectOne.java相同但ID不同
5 - 修改RealmConfiguration
RealmConfiguration realmConfiguration =
new RealmConfiguration.Builder(context)
.schemaVersion(2)
.migration(new Migration())
.build();
Run Code Online (Sandbox Code Playgroud)
5 - 添加Migration.java
public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long l) {
l += 1;
return l;
}
}
Run Code Online (Sandbox Code Playgroud)
解决了
感谢@geisshirt的回答.
public class Migration implements RealmMigration {
@Override
public long execute(Realm realm, long version) {
if (version == 0) {
Table table = realm.getTable(RealmTestObjectTwo.class);
table.addColumn(ColumnType.INTEGER, "key");
table.addColumn(ColumnType.STRING, "value");
table.setPrimaryKey("key");
version += 1;
}
return version;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |