现在 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'.
建议解决此问题的方法。
答案 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();
}
});