2017-01-05 13 views
0

フィールドが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"); 

これを行うための推奨方法はありますか?

+0

..それは機能しますか? –

+0

私は実際にあなたのフィールドに '@ Required'アノテーションを追加し、あなたのマイグレーションを通してあなたがする必要があると思います。 – EpicPandaForce

答えて

1

Doubleおよびdoubleは、doubleがnullableでないことを除いて、Realmと同じです。

Doubledoubleにしたい場合は、フィールド@Requiredを作成し、マイグレーションを介して注釈を追加してください。

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

これは、クラスフィールドを 'Double'から' double'に変更することを可能にしません。 – shoe

+0

'Double'と' double'の唯一の違いは、最初のものがnullであることです。あなたのフィールドを 'nullable = false'に設定すると、型を' double'に切り替えることができます。 –

+0

@ChristianMelchiorあなたは* realm *が* java * 'doubles'と' Doubles'を格納するために同じデータ構造を使用していると言っていますか?唯一の違いは、領域のDoublesがnullであるという追加機能を持っているということですか? – shoe

関連する問題