如何删除所有具有特定ID的项目?

时间:2018-11-26 15:40:47

标签: android realm

Android Studio 3.2

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

我有List<Profile> profileList; 我在此列表中有5个id = 1, 2, ...

个人资料

很好。

现在我需要使用id=1 ,id=3, id=5

从Realm配置文件中删除

因此删除后,列表中只能包含id=2 and id=4的2个配置文件

我该怎么做?

P.S。 ID列表是一个动态列表。今天有3个ID,明天有2个ID。

2 个答案:

答案 0 :(得分:2)

考虑到对此的直接支持,这实际上很简单...

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-

答案 1 :(得分:0)

根据Realm文档,您需要搜索所有可能的匹配项

// 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