我正在尝试同步City
列表
public class City extends RealmObject {
@PrimaryKey
@SerializedName("id")
private int id;
@SerializedName("title")
private String title;
@SerializedName("clubs")
private RealmList<Club> clubs;
}
还包含俱乐部,Club
包含各种其他模型。有没有一种简单的方法可以使本地Realm数据库与响应相同,就像在json中没有返回City一样,我需要将它从Realm中删除,否则更新它。我目前的想法是进行两次迭代,一次更新并创建新的City实例,另一次则删除不需要的实例。
例如,当用户阅读仅在本地保存的新闻时,从服务器更新用户信息很麻烦,因为:
private void createOrUpdateUser(User updated) {
User user = mRealm.where(User.class).equalTo("id", updated.getId()).findFirst();
mRealm.beginTransaction();
RealmList<RealmInt> removedNews;
if (user != null) {
removedNews = new RealmList<>();
removedNews.addAll(user.getRemovedNews());
} else {
removedNews = new RealmList<>();
}
updated = mRealm.copyToRealmOrUpdate(updated);
updated.setRemovedNews(removedNews);
mRealm.commitTransaction();
}
如果我没有将关系包装到另一个ArrayList
/ RealmList
并在更新的条目上重新设置,那么copyToRealmOrUpdate
会完全删除它们,并且无法让它们恢复
updated.setRemovedNews(user.getRemovedNews());
具有相同的结果,当执行copyToRealmOrUpdate
时,更新的用户有0个阅读新闻。即使我用RealmInt
模型替换News
并且@PrimaryKey
也是如此。
使用Retrofit2,Gson和Realm。