android - Realm Android 查询返回错误结果

标签 android database realm realm-mobile-platform

我有一个结构如下的表:

public class GroupDailyDB extends RealmObject{
    @PrimaryKey
    private int groupId;
    private String groupName;
    private String groupDescription;
    private int groupStatus;
    private boolean hasImage;
    private int sweatPoints;
    private long steps;
    private int rank;
    private float percentile;
    private int noOfUsers;
    private boolean isCurrentUserPartOfGroup;
    private boolean isCurrentUserOwner;
} 

我的数据已成功保存 enter image description here 刷新时我的 json 不发送组 ID 3,我需要更改其状态。

检查代码如下:

for(int i = 0 ; i < groupModel.getData().size() ; i++){
    GroupDailyDB groupDailyDB = 
           realm.where(GroupDailyDB.class)
           .notEqualTo("groupId",groupModel.getData().get(i).getGroupId())
           .findFirst();
    Log.i(TAG,"Group id delete daily:  "+groupDailyDB.getGroupId());
}

但是我的日志分别打印 id 4,5 它永远不会返回 id 3

最佳答案

所以,考虑一下……您有一个包含 3 个对象的列表,每个对象都有一个唯一的 ID 值。您遍历其他一些 ID 值列表,查询其 ID 不等于循环的当前 ID 的 3 个对象。

如果 ID 匹配(您将其过滤掉),该查询将返回 2 个元素,如果 ID 不匹配,则返回 3 个元素。你只得到这些查询的第一个元素,还为缺失数据而困惑?

在唯一 ID 值的情况下,您应该使用 equalTo 来找到一个匹配的元素。当没有 ID 值相等时(当 findFirst 不返回任何对象时)也可能想要添加一些异常检查

关于android - Realm Android 查询返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40303322/

相关文章:

Android 添加按钮位于抽屉导航列表下方

c# - 在云中将 SQL Azure 数据库从 SQL Server 2008 迁移到 2014

php - Sql从字符串中选择数据选择id

swift - Realm Swift 如何在结果更新时得到通知

ios - Realm:带有属性聚合的查询

ios - 在 NSUserDefaults 和 Realm 中保存一个对象

java - 在 Internet Web 应用程序(j2ee 应用程序)和 Android 移动应用程序之间交换数据

在没有连接蜂窝网络的情况下,Android 仍会检测蜂窝信号强度

android - 优化截击

sql - 复合主键应该在 SQL Server 中聚集吗?