空对象中的领域查找查询结果

dpa*_*mer 5 android realm

在查找对象的查询时,我得到的是“空”对象(非null,但未填充)。但是,在调试器中,我可以在对象描述中看到该对象的数据(请参见下文)。我还使用Realm Browser验证了数据是否存在。我尝试了不同的查找查询,使用过滤条件进行查询,对插入/查询使用相同的Realm对象,对插入/查询使用不同的Realm对象,刷新了Realm等。

如果我在RealmObject中记录字段,则会看到正确的数据打印出来。但是,我正在尝试根据https://realm.io/news/using-realm-with-rxjava/将这些模型转换为RxJava中使用的其他模型。

这是重现问题的一些示例代码。下面是在verifyRealm.close()处断开时的屏幕截图。

RealmTester realmTester1 = new RealmTester();
realmTester1.setFirstName("Tester1");
realmTester1.setLastName("ABC");
RealmTester realmTester2 = new RealmTester();
realmTester2.setFirstName("Tester2");
realmTester2.setLastName("XYZ");

Realm insertRealm = Realm.getDefaultInstance();
insertRealm.refresh();
insertRealm.beginTransaction();
insertRealm.copyToRealm(realmTester1);
insertRealm.copyToRealm(realmTester2);
insertRealm.commitTransaction();
insertRealm.close();

Realm verifyRealm = Realm.getDefaultInstance();
RealmResults<RealmTester> verifyTesters = verifyRealm.where(RealmTester.class).findAll();
verifyRealm.close();
Run Code Online (Sandbox Code Playgroud)

我在以下位置有调试器的屏幕截图:http : //i.stack.imgur.com/1UdRr.png

我正在使用v0.82.1。关于为什么这里的模型没有填充的任何想法?

bee*_*der 4

Realm-java 背后的想法是,我们生成继承自用户模型类的 Proxy 类,并重写其中的 setter 和 getter。

您在调试器中看到模型字段的值是完全正常的null,因为领域没有设置它们。(零拷贝,Realm 试图通过管理本机代码中的数据并尽可能共享它们来减少内存使用。)

因此,当您想要访问 Realm 模型的字段时,请始终使用 setter 和 getter。检查生成的 Proxy 类将帮助您理解这一点,实际上非常简单。它位于名为的构建目录中MyModelRealmProxy.java

并且还要检查文档的这一部分,它会让您了解该standalone对象以及如何将它们写入 Realm。


归档时间:

查看次数:

2870 次

最近记录:

10 年,5 月 前