Android realm.io变量没有设置?

时间:2014-12-04 20:40:32

标签: android database realm

我在realm.io中使用查询时遇到问题。我的代码:

    public static void delete(Context context, Workday workday) {
       Realm realm = getRealm(context);
       realm.beginTransaction();
       RealmResults<Workday> workdays = realm.where(Workday.class)
            .equalTo("date", workday.getDate())
            .equalTo("hours", workday.getHours())
            .equalTo("minutes", workday.getMinutes())
            .findAll();
       workdays.remove(0);
       realm.commitTransaction();
}

调试:

enter image description here

为什么数据在JSON行中可见而在字段本身中不可见?我究竟做错了什么? 提前谢谢!

更新

这是我的删除功能,它确实找到了workday1对象:

public static void delete(Context context, Workday workday) {
    Realm realm = getRealm(context);
    realm.beginTransaction();

    Workday workday1 = realm.where(Workday.class)
            .equalTo("date", workday.getDate())
            .equalTo("hours", workday.getHours())
            .equalTo("minutes", workday.getMinutes())
            .findFirst();

    workday1.removeFromRealm();
    realm.commitTransaction();
}

enter image description here

当它执行removeFromRealm方法时,它会崩溃:

java.lang.IllegalStateException:非法状态:行/对象不再有效进行操作。它被删除了吗?

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你没有做错任何事! :)

Realm代理您的对象,以便不会在整个地方存储您的数据副本。 getter和setter被代理类覆盖,并直接在Realm中访问您的数据。当然,正如您所注意到的,这使得在调试期间检查对象变得更加困难,但这就是为什么我们还重写了toString()以显示有意义的内容。