Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将独立对象添加到RealmList_Java_Android_Realm - Fatal编程技术网

Java 将独立对象添加到RealmList

Java 将独立对象添加到RealmList,java,android,realm,Java,Android,Realm,是否可以将独立对象添加到域中已持久化的RealmObject的RealmList中 嗯,我知道它不起作用,因为我在(object.row.getIndex():RealmList:94)上得到NPE 我想做的是: mRealm.beginTransaction; contact.getEmails().add(new Email()); mRealm.commitTransaction; 因为在那个特定的时刻,我无法访问某个领域(我可以让它工作,但我必须重写一些结构),例如: //In Act

是否可以将独立对象添加到域中已持久化的RealmObject的RealmList中

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

我想做的是:

mRealm.beginTransaction;
contact.getEmails().add(new Email());
mRealm.commitTransaction;
因为在那个特定的时刻,我无法访问某个领域(我可以让它工作,但我必须重写一些结构),例如:

//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());
}
`

来自这里王国的基督徒。 不,目前这是不可能的。这是一个有趣的用例。 我们之所以有一个
Realm.copyToRealm()
方法,是为了明确说明您不应该再使用旧对象。允许将独立对象添加到已持久化的列表中会降低透明度。您还需要它发生在写事务内部。在方法调用中添加对领域的引用可能是解决此问题的最佳方法

//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);
}

我也想到了你的解决办法。我只是想澄清,除了通过级联调用一路引导领域对象之外,是否还有其他选择。但是哦,好吧:)我真的需要开始两次交易吗?在
UpdateHelper.update()之外,还是在内部?