领域 - results.remove()在领域中被弃用

时间:2017-12-05 11:48:17

标签: android realm

现在 results.remove(0)已被弃用,在Android应用程序中删除realm元素的最佳方法是什么?

我试图删除特定元素,我使用了以下代码:

使用result.deleteAllFromRealm();删除所有元素,但需要删除特定位置。

RealmResults<PersonDetailsModel> results = myRealm.where(PersonDetailsModel.class).equalTo("id", personId).findAll();
        myRealm.beginTransaction();
        results.remove(0);     // App crash 
        myRealm.commitTransaction();

但该应用程序在该行崩溃,我收到此错误:

java.lang.UnsupportedOperationException: This method is not supported by 'RealmResults' or 'OrderedRealmCollectionSnapshot'.

建议解决此问题的方法。

4 个答案:

答案 0 :(得分:1)

使用deleteFromRealm方法

result.deleteFromRealm(index);

答案 1 :(得分:0)

试试这个:

 realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            RealmResults<PersonDetailsModel> result = realm.where(PersonDetailsModel.class).equalTo("id", personId).findAll();
            result.deleteAllFromRealm();
        }
    });

如果没有解决您的问题,那么您可以尝试以下行:

result.deleteFromRealm(pos);

答案 2 :(得分:0)

您可以使用此代码:

result.deleteFromRealm(index);

答案 3 :(得分:0)

realm.executeTransaction((r) -> {
    r.where(PersonDetailsModel.class).equalTo("id", personId).findAll().deleteAllFromRealm();
});

或者

realm.executeTransaction((r) -> {
    PersonDetailsModel person = r.where(PersonDetailsModel.class).equalTo("id", personId).findFirst();
    if(person != null) {
        person.deleteFromRealm();
    }
});