Realm for Android,如何将服务器数据同步到realm数据库?

时间:2016-02-06 18:33:27

标签: java android realm

我正在尝试同步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。

0 个答案:

没有答案