场景1:我创建了具有服务器响应的Realm Db(将JSON响应转换为具有值id(PK)和名称的UserRealmModel列表)并执行操作copyToRealmOrUpdate(list_of_realmresult)。它第一次工作正常。
场景2:现在,当我第二次从服务器获得响应时,我为某些用户获取空值,并再次执行copyToRealmOrUpdate(list_of_realmresult)操作,并将这些名称设为null,以获得所谓的id。
现在我想避免对来自服务器端的那些空值进行更新操作。如何使用copyToRealmOrUpdate / insertOrUpdate方法实现此目的。
答案 0 :(得分:1)
您可以使用@Required
注释这些字段。
必填字段和空值
在某些情况下,null不是字段的适当值。 @Required注释可用于告诉Realm强制执行检查以禁止空值。
来自the docs。
如果尝试使用空值更新必填字段,则会引发异常。我不知道哪一个,但我认为你很容易找到它。
答案 1 :(得分:1)
copyToRealmOrUpdate()
会覆盖原始对象。
您必须自己手动管理合并。
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
UserRealmModel userModel = realm.where(UserRealmModel.class).equalTo("id", id).findOne();
if(userModel == null) {
// create and save new
} else {
// merge non-null fields
}
realm.copyToRealmOrUpdate(userModel);
}
});