2017-01-05 79 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

Doubledouble與Realm相同,但double不可空。

因此,如果您想將Double設置爲double,那麼只需將字段設置爲@Required,然後通過遷移爲其添加註釋。

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

這使我不能將類字段從'Double'更改爲'double' – shoe

+0

它應該,因爲'Double'和'double'之間的唯一區別是第一個可以爲空。通過將您的字段設置爲'nullable = false',您可以將類型切換爲'double'。 –

+0

@ChristianMelchior你說*領域*使用相同的數據結構來存儲* java *'雙打'和'雙打' - 唯一的區別是在領域'雙打'有額外的能力爲空? – shoe

相關問題