在查找对象的查询时,我得到的是“空”对象(非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。关于为什么这里的模型没有填充的任何想法?
Realm-java 背后的想法是,我们生成继承自用户模型类的 Proxy 类,并重写其中的 setter 和 getter。
您在调试器中看到模型字段的值是完全正常的null,因为领域没有设置它们。(零拷贝,Realm 试图通过管理本机代码中的数据并尽可能共享它们来减少内存使用。)
因此,当您想要访问 Realm 模型的字段时,请始终使用 setter 和 getter。检查生成的 Proxy 类将帮助您理解这一点,实际上非常简单。它位于名为的构建目录中MyModelRealmProxy.java
并且还要检查文档的这一部分,它会让您了解该standalone对象以及如何将它们写入 Realm。
| 归档时间: |
|
| 查看次数: |
2870 次 |
| 最近记录: |