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

では、これについて考えてみてください...それぞれに一意の ID 値を持つ 3 つのオブジェクトのリストがあります。ID 値の他のリストをループして、ID がループの現在の ID と等しくない 3 つのオブジェクトを照会します。

そのクエリは、ID が一致する場合 (フィルターで除外した場合) に 2 つの要素を返し、ID が一致しない場合に 3 つの要素を返します。これらのクエリの最初の要素しか取得できず、欠落しているデータについて混乱していますか?

一意の ID 値の場合、equalTo一致する 1 つの要素を見つけるために使用する必要があります。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 に答える