Android 如何避免使用Realm insertOrUpdate/copyToRealmOrUpdate更新空值?
场景1:我创建了带有服务器响应的领域数据库(将JSON响应转换为具有值id(PK)和名称的UserRealmModel列表),并执行CopyTorelmOrUpdate操作(list_of_realmresult)。它第一次运行良好 场景2:现在,当我第二次从服务器获得响应时,我为一些用户获取空值,然后再次执行copyToRealmOrUpdate(list_of_realmresult)操作,并为受尊重的id将这些名称设置为空Android 如何避免使用Realm insertOrUpdate/copyToRealmOrUpdate更新空值?,android,realm,Android,Realm,场景1:我创建了带有服务器响应的领域数据库(将JSON响应转换为具有值id(PK)和名称的UserRealmModel列表),并执行CopyTorelmOrUpdate操作(list_of_realmresult)。它第一次运行良好 场景2:现在,当我第二次从服务器获得响应时,我为一些用户获取空值,然后再次执行copyToRealmOrUpdate(list_of_realmresult)操作,并为受尊重的id将这些名称设置为空 现在我想避免对来自服务器端的空值执行更新操作。如何使用copyTo
现在我想避免对来自服务器端的空值执行更新操作。如何使用copyToRealmOrUpdate/insertOrUpdate方法实现这一点。您可以使用
@必需的对这些字段进行注释
必填字段和空值
在某些情况下,null不是字段的适当值。@Required注释可用于告诉Realm强制检查以禁止空值
从
如果试图用空值更新必填字段,将引发异常。我不知道是哪一个,但我想你可以很容易地找到它。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);
}
});