将独立对象添加到RealmList

时间:2015-01-21 15:41:50

标签: java android realm

是否可以将独立对象添加到已经存在于领域中的RealmObject的RealmList中?

嗯,我知道它不起作用,因为我在(object.row.getIndex():RealmList:94

得到了NPE

我想做的是:

mRealm.beginTransaction;
contact.getEmails().add(new Email());
mRealm.commitTransaction;

因为在那个特定时刻我无法访问Realm(我可以使它工作,但我必须重写一些结构),例如:

//In Activity
Contact contact = Realm.where(Contact.class).equalsTo("name","pete").findAll().first();
mRealm.beginTransaction;
UpdateHelper.update(contact);
mRealm.commitTransaction;

//Helper class some else package
public static void update(Contact contact) {
    //do update stuff
    contact.getEmails().add(new Email());
}

`

1 个答案:

答案 0 :(得分:8)

来自境界的克里斯蒂安。 不,目前这是不可能的。但这是一个有趣的用例。 我们使用Realm.copyToRealm()方法的原因是为了让您真正明确不再使用旧对象。允许将独立对象添加到已保留的列表中会降低透明度。您还需要在写入事务中进行此操作。在方法调用中添加对Realm的引用可能是解决它的最佳方法。

//In Activity
realm.executeTransaction(new Realm.Transaction() {
    @Override
    public void execute(Realm realm) {
        Contact contact = realm.where(Contact.class)
                               .equalTo("name","pete")
                               .findFirst();
        if(contact != null) {
            UpdateHelper.update(contact, realm);
        }
    }
});

//helper method
public static void update(Contact contact, Realm realm) {
    //do update stuff
    Email email = realm.copyToRealm(new Email());
    contact.getEmails().add(email);
}