【问题标题】:How to migrate a field from a boxed version to an unboxed version如何将字段从盒装版本迁移到未盒装版本
【发布时间】:2017-01-05 00:08:55
【问题描述】:

我有一个字段是 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");

这是推荐的方法吗?

【问题讨论】:

  • ..有用吗?
  • 我实际上认为您需要做的就是在您的字段上添加一个 @Required 注释,并通过您的迁移。

标签: android realm realm-migration


【解决方案1】:

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

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

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

【讨论】:

  • 这无法让我将类字段从 Double 更改为 double
  • 应该,因为Doubledouble 之间的唯一区别是第一个可以为空。通过将您的字段设置为nullable = false,您可以将类型切换为double
  • @ChristianMelchior 你是说 realm 使用相同的数据结构来存储 java doublesDoubles——唯一的区别是领域中的Doubles 有附加为空的能力吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多