2016-06-02 2 views
1

Auparavant, en l'absence de version stable de domaine pour Java (Android), nous ne pouvions pas stocker de valeurs NULL dans le domaine et nous devions effectuer un hack non naturel pour pouvoir le faire, comme expliqué au this post.Stockage des valeurs nulles dans le domaine à l'aide d'Android

Mais à partir de maintenant realm 1.0 est publié, y at-il une mise à jour sur la possibilité de stocker la valeur nulle? Par exemple: cas malheureux où il n'y a pas de champ dans JSON que je veux stocker dans le domaine après l'analyse mais que je n'ai pas manipulé manuellement.

J'ai le code suivant:

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

les butées de flux de programme et quitte le bloc le code est situé à l'intérieur.

la logcat montre

W/System.err: org.json.JSONException: Aucune valeur Selector

Mais quand je fais:

realmObject.setData(null); 

Le flux de programme n'arrête pas et continue à travers ma déclaration de royaume realmObject.setData(null);

Dans certains cas, il n'y a pas de valeur pour l'étiquette "SELECTOR" dans mon fichier Json. Et je veux qu'il soit nul par défaut.

+0

il est store null s'il n'y a pas de valeur pour le sélecteur, n'est-ce pas? – KDeogharkar

+0

ouais, mais quand je fais le flux de programme ne passe pas cette ligne – erluxman

+0

Comme maintenant je détecte le flux avec des infos de journal – erluxman

Répondre

1

fait, je trouve que le problème est en fait simplement avec:

jsonObject.getString("SELECTOR") 

pas toute la déclaration:

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

si le correctif a été pour moi

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

vous pouvez utiliser has qui vérifiera si la clé est disponible non et base de cette valeur sauver pour objet royaume

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

J'ai trouvé une meilleure solution :) nous pouvons utiliser optString au lieu de getString – erluxman

+0

oui que vous pouvez également utiliser. – KDeogharkar