【发布时间】:2016-05-20 16:37:34
【问题描述】:
我的 RealmObject 值似乎被 RealmProxy 类隐藏了,但可以从代理类中设置。
如您所见,我的模型非常简单。
public class GroupRealm extends RealmObject {
@PrimaryKey
public String id;
@Index
public String name;
public String imageUrl;
public int order;
public GroupRealm parent;
public RealmList<GroupRealm> children;
public RealmList<ContentRealm> contents;
}
这就是我设置值的方式(db 是一个有效的领域,一切都在一个可以正常提交的事务中):
GroupRealm gr = db.where(GroupRealm.class).equalTo("id",g.GroupID).findFirst();
if(gr==null){
gr = db.createObject(GroupRealm.class,g.GroupID);
}
gr.imageUrl = g.GlyphUrl;
gr.name = g.Title;
gr.order = g.OrderNum;
下图是我在后面查询db时得到的。(相同的变量名在代码中不同的地方)
在我定义了 RealmObjects 的项目的 android.library 中,我有必要的插件。
apply plugin: 'com.android.library'
apply plugin: 'realm-android'
在项目级别上,我正在设置正确的依赖项:
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath "io.realm:realm-gradle-plugin:0.90.1"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
我没有想法。如果我尝试访问任何内容,我会按预期检索 GroupRealm,但通过代理类公开的所有公共属性都返回 null!
【问题讨论】:
-
您不能信任来自调试器的输出错误。我们没有将数据存储在字段中,而是使用 getter/setter 从底层数据库中获取它们。此处对此进行了描述:realm.io/docs/java/latest/#debugging
-
我只是将私有字段与 getter 和 setter 一起使用。当我这样做时,一切正常,不得不制作所有这些样板代码只是烦人。
-
如果没有正确应用转换器,这是一个巨大的错误。请尽可能详细地在github.com/realm/realm-java/issues 上创建问题。然后我们就可以深入了解它了。
-
遇到了这个问题,花了1个小时才找到答案............在这里。