2017-01-05 5 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 не может быть опущен.

Так что если вы хотите сделать Double в double, то просто введите поле @Required и добавьте аннотацию к нему через миграцию.

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

это не позволяет мне изменить поле класса с 'Double' на' double' – shoe

+0

Это должно быть потому, что единственная разница между 'Double' и' double' заключается в том, что первая является нулевой. Установив поле «nullable = false», вы можете переключить тип на «double». –

+0

@ChristianMelchior вы говорите, что * realm * использует ту же структуру данных для хранения * java * 'doubles' и' Doubles' - единственная разница в том, что 'Doubles' в области имеют дополнительную возможность быть null? – shoe