Android Realm中不推荐使用Realm-results.remove()

Android Realm中不推荐使用Realm-results.remove(),android,realm,Android,Realm,既然realm中不推荐使用results.remove(0),那么在android应用程序中删除realm元素的最佳方法是什么 我已尝试删除特定元素,并使用了以下代码: 使用result.deleteAllFromRealm()删除所有元素,但需要删除特定位置 RealmResults<PersonDetailsModel> results = myRealm.where(PersonDetailsModel.class).equalTo("id", personId).findAl

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

建议解决此问题的方法。

使用deleteFromRealm方法

result.deleteFromRealm(index);
result.deleteFromRealm(index);
试试这个:

 realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            RealmResults<PersonDetailsModel> result = realm.where(PersonDetailsModel.class).equalTo("id", personId).findAll();
            result.deleteAllFromRealm();
        }
    });
您可以使用以下代码:


这里已经回答了:我之所以添加这个答案,是因为
deleteFromRealm(index)
调用不可靠,而且没有人发布
object.deleteFromRealm
。因此,如果有人打开这个页面,不去重复,他们会看到大部分错误的答案。我没有内疚的良心结束这一重复,也没有提供一个答案,其他包含“规范的方式”。
result.deleteFromRealm(pos);
result.deleteFromRealm(index);
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();
    }
});