2016-10-28 3 views
1

У меня есть таблица, которая имеет структуру следующим образом:Realm Android запросы возвращают неверный результат

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

Но мой журнал печатает идентификатор 4,5, соответственно он не возвращает мне идентификатор 3

+0

Что это такое? – EpicPandaForce

+0

@EpicPandaForce realmAsyncTask – Sutirth

+0

Распечатайте это перед циклом и увидите возвращаемое значение? groupModel.getData(). size() – Stallion

ответ

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()); 

?

+0

Даже попытался сделать это, но does not works дает мне все id – Sutirth

1

Итак, подумайте об этом ... У вас есть список из 3 объектов, каждый из которых имеет уникальное значение ID. Вы перебираете какой-либо другой список значений идентификатора, запрашивая 3 объекта, где его идентификатор не равен текущему идентификатору цикла.

Этот запрос возвратит 2 элемента для случая совпадающего идентификатора (вы отфильтровали его) и 3 элемента для несоответствующего идентификатора. Вы получаете только первый элемент этих запросов, и вы смущены отсутствующими данными?

В случае уникальных значений идентификатора вы должны использовать equalTo, чтобы найти один элемент, который соответствует. Также может потребоваться добавить проверку исключения, если значение ID не равно (когда findFirst не возвращает объект)

Смежные вопросы