【问题标题】:What happened to removing items from realm.io? RealmException "Removing object is not supported."?从 realm.io 中删除项目发生了什么? RealmException“不支持删除对象。”?
【发布时间】:2015-01-18 13:58:10
【问题描述】:

我正在尝试根据查询从 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')。

感谢您在这方面的帮助!

【问题讨论】:

    标签: android database realm


    【解决方案1】:

    我已联系 Realm.io 支持,等待答复。同时:

    RealmCustomLocation location = databaseLocations.get(databaseLocations.size() - 1);
    location.removeFromRealm();
    

    相当于

    databaseLocations.removeLast()
    

    所以它可以用作解决方法。

    编辑:支持人员告诉我他们正在为将来的版本修复它,并建议使用我同时发布的解决方法。

    【讨论】:

    • 有任何来自 Realm.io 的消息吗?
    • 还没有更新,要么他们没有解决问题,要么他们忘记了我的请求。我为了我的数据库需要迁移到 DBFlow,因为在我看来,Realm 目前还不够成熟
    • 我自己也遇到了这个问题。我不敢相信他们至少没有更新有关如何删除某些内容的文档。
    【解决方案2】:

    如果你想删除所有对象,那么我会创建一个这样的while循环:

    while (location.size() > 0) {
        location.removeLast();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 1970-01-01
      相关资源
      最近更新 更多