如何将字段从盒装版本迁移到未装箱版本

How to migrate a field from a boxed version to an unboxed version

我有一个 Double 字段。我想将其更改为 double 字段。这是我为此设置的代码:

schema.get("Item")
        .addField("mOriginalWeightUnboxed",double.class)
        .transform(new RealmObjectSchema.Function() {
            @Override
            public void apply(DynamicRealmObject obj) {
                Double boxedWeight=obj.get("mOriginalWeight");
                if (boxedWeight==null)
                    boxedWeight=0.0;
                obj.setDouble("mOriginalWeightUnboxed",boxedWeight.doubleValue());
            }
        })
        .removeField("mOriginalWeight")
        .renameField("mOriginalWeightUnboxed","mOriginalWeight");

这是推荐的方法吗?

Doubledouble 对于 Realm 是相同的,除了 double 不可为空。

因此,如果您想将 Double 变成 double,那么只需将字段设为 @Required,并通过迁移为其添加注释即可。

schema.get("Item")
    .setNullable("mOriginalWeight", false);