gpt4 book ai didi

java - 将对象转换为Realm中的list [object]作为迁移(如何在Realm中用对象字段替换list [object]?)

转载 作者:行者123 更新时间:2023-12-02 13:33:52 26 4
gpt4 key购买 nike

我想将现有的token导入tokenList作为第一项,例如,如果某人有一个
token="abc"之后的migration,我希望他/她有tokenListtokenList[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;

最佳答案

我在 Realm GitHub GitHub 中创建了新的 issue ,然后找到了正确的方法,可以将 object转换为中的list[object],然后将现有对象从以前的版本转换为应用程序的新版本。

在此示例中,我们要在insert模型中将transform Token 对象转换为tokenList[Token]

在迁移的最新版本中,请输入以下内容:

public class RealmMigration implements io.realm.RealmMigration {

.

.

.

if (oldVersion == 3) {
//Create a schema for Bank
final RealmObjectSchema bankSchema = realmSchema.get("Bank");
//Create a schema for Token that has been in Bank model
final RealmObjectSchema tokenSchema = realmSchema.get("Token");
//We use bankSchema for add tokenList field and transform
bankSchema
.addRealmListField("tokenList", tokenSchema)
.transform((obj) -> {//obj is bank model,we have a transform in bank model
DynamicRealmObject token = obj.get("Token");
List<DynamicRealmObject> tokenList = obj.get("tokenList");
//We add token from pre version to tokenList in new version
if (token != null) tokenList.add(token);
}
)
//Finally remove unwanted field
.removeField("Token");
}
}

关于java - 将对象转换为Realm中的list [object]作为迁移(如何在Realm中用对象字段替换list [object]?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59855380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com