我在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();
}
调试:
为什么数据在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();
}
当它执行removeFromRealm方法时,它会崩溃:
java.lang.IllegalStateException:非法状态:行/对象不再有效进行操作。它被删除了吗?
我该如何解决这个问题?
答案 0 :(得分:2)
你没有做错任何事! :)
Realm代理您的对象,以便不会在整个地方存储您的数据副本。 getter和setter被代理类覆盖,并直接在Realm中访问您的数据。当然,正如您所注意到的,这使得在调试期间检查对象变得更加困难,但这就是为什么我们还重写了toString()
以显示有意义的内容。