如何深度复制包含RealmList作为属性的Realm中的对象,并且不要让RealmList对象引用同一个对象

时间:2017-07-07 17:13:55

标签: android copy realm

我有3个领域对象

public class Portfolio extends RealmObject {
    @PrimaryKey
    public long id;
    public RealmList<PortfolioCoin> portfolioCoins = new RealmList<>();
}

public class PortfolioCoin extends RealmObject {
    public Coin coin;
    public RealmList<Holdings> holdings = new RealmList<>();
    public int color;
}

public class Holdings extends RealmObject {
    @PrimaryKey
    public long id;
    public double amount;
    public double price;
}

现在我希望我的用户能够复制他们的投资组合。 如果我创建一个新的投资组合并执行此操作

portfolio.portfolioCoins.addAll(activePortfolio2.portfolioCoins);

两个投资组合基本上都是引用相同的对象。如何对列表中的项目进行深层复制,记住它的嵌套两次。 Holdings嵌套在PortfolioCoin中,而PortfolioCoin嵌套在Portfolio中。

我真的必须编写嵌套循环才能执行此操作吗?并迭代每个项目,然后迭代每个项目中的每个项目?

1 个答案:

答案 0 :(得分:3)

您可以尝试以下技巧

portfolio.portfolioCoins.addAll(realm.copyToRealmOrUpdate(realm.copyFromRealm(activePortfolio2.portfolioCoins, 2))); // maybe 3?