使用 Android 在领域中存储空值

Storing null values in realm using Android

以前,当 Java (Android) 没有稳定版本的领域时,我们无法在领域中存储空值,我们必须执行一些不自然的 hack 才能做到因此,如 this post.

中所述

但是现在realm 1.0已经发布了,有没有关于能够存储null值的更新?

例如:不幸的情况是 JSON 中没有我想在解析后存储在领域中但尚未手动处理的字段。

我有以下代码:

realmObject.setData(jsonObject.getString("SELECTOR"));

程序流停止并退出代码所在的块。

logcat 显示

W/System.err: org.json.JSONException: No value for SELECTOR

但是当我这样做时:

realmObject.setData(null);

程序流不会停止并继续穿过我的领域声明realmObject.setData(null);

在某些情况下,我的 Json 文件中的标签 "SELECTOR" 没有任何值。 我希望它默认为 null。

您可以使用 has 检查密钥是否可用,以及该保存值到领域对象的基础

 if (jsonObject.has("SELECTOR")) {
       realmObject.setData(jsonObject.getString("SELECTOR"));
    }
else{
 realmObject.setData(null);
}

我实际上发现问题实际上只是 :

jsonObject.getString("SELECTOR")

不是整个声明:

realmObject.setData(jsonObject.getString("SELECTOR"));

所以我的解决方法是

realmObject.setData(jsonObject.optString("SELECTOR"));