Как удалить все элементы с определенным идентификатором? - PullRequest
0 голосов
/ 26 ноября 2018

Android studio 3.2

public class Profile extend RealmObject {
  @PrimaryKey
  private long id;
}

У меня есть List<Profile> profileList; У меня в этом списке 5 профилей с id = 1, 2, ...

Nice.

Теперь мне нужно удалитьиз профилей Realm с id=1 ,id=3, id=5

Поэтому после удаления список должен содержать только 2 профиля с id=2 and id=4

Как мне это сделать?

PS Список идентификаторовэто динамический список.Сегодня у него 3 идентификатора, а завтра - 2 идентификатора.

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Ну, это на самом деле довольно просто, учитывая, что есть прямая поддержка для этого ...

r.executeTransaction((realm) -> {
    realm.where(Profile.class).in("id", new Long[] { 1L, 3L, 5L }).findAll().deleteAllFromRealm();
});

См. https://realm.io/docs/java/latest/api/io/realm/RealmQuery.html#in-java.lang.String-java.lang.Long:A-

0 голосов
/ 26 ноября 2018

В соответствии с документацией Царства вам необходимо найти все возможные совпадения

// obtain the results of a query
final RealmResults<Profile> results = realm.where(Profile.class).equalTo("profile.id", 1).where().equalTo("profile.id", 3).where().equalTo("profile.id", 5).findAll();

// All changes to data must happen in a transaction
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        // remove single match
        results.deleteFirstFromRealm();
        results.deleteLastFromRealm();

        // remove a single object
        Dog dog = results.get(5);
        dog.deleteFromRealm();

        // Delete all matches
        results.deleteAllFromRealm();
    }
});

Realm doc

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...