从 realm.io 中删除项目发生了什么?领域异常"Removing object is not supported."?
What happened to removing items from realm.io? RealmException "Removing object is not supported."?
我正在尝试根据查询从 Realm.io 数据库中删除最后一个对象,如下所示:
Realm realm = Realm.getInstance(this);
final RealmResults<RealmCustomLocation> databaseLocations = realm.where(RealmCustomLocation.class).findAllSorted("timeStamp", RealmResults.SORT_ORDER_DESCENDING);
if(databaseLocations.size() >= 4){
realm.beginTransaction();
databaseLocations.removeLast();
realm.commitTransaction();
}
这与 Realm.io instructions 中关于删除的内容完全相同:
realm.beginTransaction();
result.removeLast();
realm.commitTransaction()
但是当我执行代码时,它总是因 RealmException
而中断
io.realm.exceptions.RealmException: Removing object is not supported.
然后我查看了RealmResults.java的源代码,我发现了这个:
所以难怪一直闪退,removeLast()什么都不做,只会报错!
所以我的问题是:我怎样才能从数据库中删除对象?!
我在 Android 上使用 realm.io 0.77(编译 'io.realm:realm-android:0.77.0')。
感谢您对此的帮助!
我已联系 Realm.io 支持,等待答复。同时:
RealmCustomLocation location = databaseLocations.get(databaseLocations.size() - 1);
location.removeFromRealm();
相当于
databaseLocations.removeLast()
所以它可以用作解决方法。
编辑:支持人员告诉我他们正在为未来的版本修复它,并建议使用我同时发布的解决方法。
如果你想删除所有对象,那么我会像这样创建一个 while 循环:
while (location.size() > 0) {
location.removeLast();
}
我正在尝试根据查询从 Realm.io 数据库中删除最后一个对象,如下所示:
Realm realm = Realm.getInstance(this);
final RealmResults<RealmCustomLocation> databaseLocations = realm.where(RealmCustomLocation.class).findAllSorted("timeStamp", RealmResults.SORT_ORDER_DESCENDING);
if(databaseLocations.size() >= 4){
realm.beginTransaction();
databaseLocations.removeLast();
realm.commitTransaction();
}
这与 Realm.io instructions 中关于删除的内容完全相同:
realm.beginTransaction();
result.removeLast();
realm.commitTransaction()
但是当我执行代码时,它总是因 RealmException
而中断io.realm.exceptions.RealmException: Removing object is not supported.
然后我查看了RealmResults.java的源代码,我发现了这个:
所以我的问题是:我怎样才能从数据库中删除对象?!
我在 Android 上使用 realm.io 0.77(编译 'io.realm:realm-android:0.77.0')。
感谢您对此的帮助!
我已联系 Realm.io 支持,等待答复。同时:
RealmCustomLocation location = databaseLocations.get(databaseLocations.size() - 1);
location.removeFromRealm();
相当于
databaseLocations.removeLast()
所以它可以用作解决方法。
编辑:支持人员告诉我他们正在为未来的版本修复它,并建议使用我同时发布的解决方法。
如果你想删除所有对象,那么我会像这样创建一个 while 循环:
while (location.size() > 0) {
location.removeLast();
}