【问题标题】:How can i avoid null values from being updating with Realm insertOrUpdate / copyToRealmOrUpdate?如何避免使用 Realm insertOrUpdate / copyToRealmOrUpdate 更新空值?
【发布时间】:2016-07-26 13:49:03
【问题描述】:

场景 1:我创建了具有服务器响应的 Realm Db(将 JSON 响应转换为具有值 id(PK) 和名称的 UserRealmModel 列表)并执行操作 copyToRealmOrUpdate(list_of_realmresult)。第一次运行良好。

场景 2:现在,当我第二次从服务器获得响应时,我得到一些用户的 null 值,并再次执行 copyToRealmOrUpdate(list_of_realmresult) 操作并将这些名称设为 null 以获取受尊重的 id。

现在我想避免对来自服务器端的那些空值进行更新操作。我如何使用 copyToRealmOrUpdate/insertOrUpdate 方法来实现这一点。

【问题讨论】:

    标签: android realm


    【解决方案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);
        }
    });
    

    【讨论】:

      【解决方案2】:

      您可以使用@Required 注释这些字段。

      必填字段和空值

      在某些情况下,null 不是字段的适当值。 @Required 注解可用于告诉 Realm 强制检查以禁止空值。

      来自the docs

      如果您尝试使用空值更新必填字段,则会引发异常。我不知道是哪一个,但我想你可以很容易地找到它。

      【讨论】:

        猜你喜欢
        • 2023-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-05
        • 1970-01-01
        • 1970-01-01
        • 2013-07-01
        • 1970-01-01
        相关资源
        最近更新 更多