【问题标题】:Realm relation field always null [duplicate]领域关系字段始终为空 [重复]
【发布时间】:2016-07-27 18:17:50
【问题描述】:

有我的模型:

public class RChat extends RealmObject {
    @PrimaryKey
    private String              Id;
    private RMyTest Test;

    public RChat() {}
}

和

public class RMyTest extends RealmObject {
    @PrimaryKey
    private String myName;

    public RMyTest() {
    }
}

我是这样使用的:

mRealm = Realm.getInstance(this);


        mRealm.beginTransaction();
        final RChat chat = mRealm.createObject(RChat.class);
        chat.setId("test");
        RMyTest rProfile = mRealm.createObject(RMyTest.class);
        rProfile.setMyName("alireza test");
        chat.setTest(rProfile);
        //mRealm.copyToRealmOrUpdate(chat);
        mRealm.commitTransaction();

        RChat chat1 = mRealm.where(RChat.class).equalTo("Id","test").findFirst();

但chat1 对象的Test 字段始终具有空值。我该如何解决这个问题?

【问题讨论】:

  • 附注,您如何在没有设置器和获取器的RealmObjects 的情况下编译代码?
  • 顺便说一句,你的代码对我来说很好用。
  • 同样的问题。你找到解决办法了吗?
  • @toidiu 我发布了答案。请检查一下。

标签: android null realm relation


【解决方案1】:

代码看起来正确。如果通过检查调试窗口中的chat1 的Test 字段得到空值,您将得到空值。这是意料之中的。

Realm 将生成一个代理类并覆盖代理类中的 getter/setter。所以如果你尝试

RMyTest rProfile = chat1.getTest();

相信你可以得到对应的RMyTestObject,而不是null。

此行为已记录在 here。

【讨论】:

  • 使用 getter 有帮助。互联网上唯一对我有帮助的答案!
【解决方案2】:

我在想我的对象不能直接为空,但重点是 Realm 为模型使用代理,而代理实际上不为空。

【讨论】:

    猜你喜欢
    • 2015-07-24
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 2012-10-09
    • 2018-09-19
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    相关资源
    最近更新 更多