我需要将我的一个模型对象(使用Retrofit从Json自动填充)转换为Realm对象。
首先,我的代码是qplot(data = di, x = carat, y = price, col = cut)
而不是ggplot
。 (我new RealmPoll()
得到的realm.createObject(RealmPoll.class)
就像this question所以我解决了这个问题。但我找不到复制RealmList的方法。
我找不到在official Realm website tutorial和docs中使用RealmLists创建RealmObjects的任何示例
只有Realm才能创建托管的RealmLists。管理RealmLists将 每当底层Realm出现时自动更新内容 已更新,只能使用RealmObject的getter进行访问。
这让我相信它在某种程度上是不可能的?但这是一项非常简单的任务。我不知道如何解释文档的含义。
如果它包含列表,是否有可能将对象(如下面的RetrofitPoll)转换为领域对象(如下面的RealmPoll)?
一个说明我问题的功能:
NullPointerException
RetrofitPoll.java
private RealmPoll convertRetrofitPollToRealmPoll(Realm realm, RetrofitPoll retrofitPoll)
{
RealmPoll realmPoll = realm.createObject(RealmPoll.class); //<----- fixed, used to be "new RealmPoll()".
//Convert List<Answer>
RealmList<RealmAnswer> realmAnswers = new RealmList<RealmAnswer>(); //<----- How to do same thing here?
for(RetrofitAnswer retrofitAnswer : retrofitPoll.getAnswers())
{
realmAnswers.add(convertRetrofitAnswerToRealmAnswer(retrofitAnswer));
}
realmPoll.setAnswers(realmAnswers);
}
RealmPoll.java
public class RetrofitPoll
{
private List<Answer> answers;
private String id;
private Date startDate;
private String title;
private Topic topic;
}
答案 0 :(得分:10)
应该可以执行以下操作
ObjectWithList obj = new ObjectWithList();
RealmList<Foo> list = new RealmList();
list.add(new Foo());
obj.setList(list);
realm.beginTransaction();
realm.copyToRealm(obj); // This will do a deep copy of everything
realm.commitTransaction();
如果您使用Retrofit创建整个对象图,您应该只需使用一个单行内容即可将所有内容复制到Realm中。如果没有,这是一个错误。
请注意,这也在文档中:
* Non-managed RealmLists can be created by the user and can contain both managed and non-managed
* RealmObjects. This is useful when dealing with JSON deserializers like GSON or other
* frameworks that inject values into a class. Non-managed elements in this list can be added to a
* Realm using the {@link Realm#copyToRealm(Iterable)} method.
仅通过new RealmList()
创建非托管列表,但这可能在文档中更清晰。