1

我有一个结构如下的表:

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;
} 

我的数据已成功保存 在此处输入图像描述 我的 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

4

2 回答 2

1

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

该查询将为匹配 ID 的情况返回 2 个元素(您将其过滤掉),为不匹配的 ID 返回 3 个元素。您只获得了这些查询的第一个元素,而您对丢失的数据感到困惑?

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

于 2016-10-28T14:11:40.167 回答
0

你的代码不应该是这样的吗

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

?

于 2016-10-28T12:26:10.350 回答