使用 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"));
以前,当 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"));