【发布时间】:2020-01-22 08:23:27
【问题描述】:
我想将现有的token 作为第一项导入tokenList,例如,如果有人有
token="abc" 在migration 之后,我希望他/她有tokenList 那个tokenList[0]=="abc"
这是我的迁移代码:
public class RealmMigration implements io.realm.RealmMigration {
.
.
.
if (oldVersion == 3) {
final RealmObjectSchema bankSchema = realmSchema.get("Bank");
final RealmObjectSchema tokenSchema = realmSchema.get("Token");
DynamicRealmObject bank = realm.createObject("Bank",1);
Token token = bank.get("Token");
bankSchema.addRealmListField("tokenList", tokenSchema);
List<Token> tokenList = bank.get("tokenList");
if (token != null) tokenList.add(token);
bankSchema.removeField("Token");
}
}
我在新版本中替换了这个:
@RealmField(name = "tokenList")
private RealmList<Token> mTokenList;
在我的课堂上使用旧版本:
@RealmField(name = "Token")
private Token mToken;
【问题讨论】:
-
那么什么不起作用?有没有例外之类的?您是否更新了架构版本号以触发迁移?
-
是的,我更新了它,迁移很好,但是当我在旧版本上安装新版本时应用程序崩溃,因为我无法将现有令牌(银行中的旧字段)插入 tokenList(银行中的新字段).java。 lang.IndexOutOfBoundsException: Index: 0, Size: 0 因为 bankList 未填写迁移。
标签: java android kotlin realm realm-migration