gpt4 book ai didi

android - 更改 Realm 字段的数据类型 - Java

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:39 25 4
gpt4 key购买 nike

我想将 Realm 字段的数据类型从 String 更改为 int 并且仅供引用,该字段也是一个 Primary Key。我在 RealmMigration 中找不到解决此问题的方法。

PS:我的应用已经投入生产,该字段中当前的所有值都是整数。

编辑 1

我的模型类

public class Team extends RealmObject {
@SerializedName("id")
@PrimaryKey
private int id;
@SerializedName("name")
private String name;
@SerializedName("description")
private String description;
}

在尝试了 Christian 的回答之后我的迁移

if (oldVersion == 6) {
RealmObjectSchema teamSchema = schema.get("Team");
teamSchema.addField("temp_id", int.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setInt("temp_id", Integer.valueOf(obj.getString("id")));
}
})
.removeField("id")
.renameField("temp_id", "id")
.addPrimaryKey("id");
}

最佳答案

没有单行方法,但您可以遵循与我们的迁移示例中相同的模式:https://github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample/model/Migration.java#L132-L132

        schema.get("MyClass")
.addField("new_key", int.class)
.transform(new RealmObjectSchema.Function() {
@Override
public void apply(DynamicRealmObject obj) {
obj.setInt("new_key", Integer.valueOf(obj.getString("old_key")));
}
})
.removeField("old_key")
.addPrimaryKey("new_key")
.renameField("new_key", "old_key");

关于android - 更改 Realm 字段的数据类型 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37946076/

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