在使用Realm資料庫管理的時候,需要對一個表新增field。當時是想的是設定預設值就出錯了。錯誤程式碼如下
if (!schema.hasField("cultureSwitch")) {
schema.addField("cultureSwitch", Boolean.class).setNullable("cultureSwitch", true);
}
複製程式碼
異常以資訊:
java.lang.IllegalStateException: Field is already nullable: cultureSwitch
看字面資訊是該field已經是nullable。那我就去掉設定預設值的程式碼試試
if (!schema.hasField("cultureSwitch")) {
schema.addField("cultureSwitch", Boolean.class);
}
複製程式碼
天不遂人願,又報錯了
io.realm.exceptions.RealmMigrationNeededException: Migration is required due to the following errors: - Property 'SpeechSettingRealmBean.cultureSwitch' has been made required.
得,現在又是說該field是required.那好嘛,我又接著改
if (!schema.hasField("cultureSwitch")) {
schema.addField("cultureSwitch", Boolean.class).setRequired("cultureSwitch", true);
}
複製程式碼
這次終於大功告成了。
後面又再嘗試了另外一種方式,如下:
if (!schema.hasField("cultureSwitch")) {
schema.addField("cultureSwitch", boolean.class);
}
複製程式碼
同樣也是可以的,這個就有必要深究了。
查了stackOverFlowd發現:
-
boolean.class : 是可nullable
-
Boolean.class : 是required
備註:realm版本是5.4.0
PS-人的一生可能會遇到很多喜歡的人,但是心疼的只會有一個