2017-06-22 1 views
1

J'utilise Sugar ORM pour interroger une liste d'applications. J'ai une colonne booléenne pour les champs de marquage dans ce utilisant:Sugar ORM ne peut pas interroger la colonne avec des valeurs booléennes

@Setter @Getter public boolean isNew = false; 

Maintenant, après l'appel API je vais mettre à jour et sauvegarder l'enregistrement pour marquer toutes les nouvelles applications et pour l'affichage, je me contenterai d'interroger à l'aide:

List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "true"); 

Le problème est qu'il retourne 0 entrée où il doit avoir 3 sur ma fin. Pour vérifier que je reçois toute la liste et vérifiez la colonne un par un pour vérifier ses valeurs:

List<AppsModel> test = AppsModel.listAll(AppsModel.class); 
     for(int i=0;i<test.size();i++){ 
      Log.e("Test app size", String.valueOf(test.get(i).isNew())); 
     } 

Et il retourne 3 comme prévu avec de vraies valeurs. Je peux faire usage de cette boucle pour la liste mais je ne veux pas car je veux garder mon code aussi propre que possible.

Ai-je oublié quelque chose ici?

Répondre

5

D'accord, je trouve la réponse here de Satyan se

Donc, fondamentalement, en utilisant "true" correspondra comme String. Il faut donc utiliser à la place:

List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "1"); 

en tant que valeurs booléennes de magasin SQLite comme 0 et 1.

+2

Il est pas de sucre ORM, les magasins SQLite valeur booléenne comme 0 et 1. [Référence] (https://sqlite.org /datatype3.html) –

+0

Je vous remercie de l'avoir signalé. – KaHeL