我正在使用Sugar ORM来查询应用列表。我有一个布尔列用于标记字段,使用:
@Setter @Getter public boolean isNew = false;
现在在API调用之后,我将更新并保存记录以标记所有新应用,然后为了显示我将使用以下方式查询:
List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "true");
问题是它返回0条目,在我的结尾有3条。要检查我是否获得所有列表并逐一检查列以检查其值:
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()));
}
它按预期返回3并带有真值。我可以使用这个循环列表,但我不想,因为我想尽可能保持我的代码清洁。
我在这里错过了什么吗?
答案 0 :(得分:8)
好的,我从satyan自己找到了答案here
所以基本上,使用"true"
会将其匹配为String。所以改为使用:
List<AppsModel> app_list = AppsModel.find(AppsModel.class, "is_new = ?", "1");
由于SQlite将布尔值存储为0和1。