【问题标题】:Android, Realm: Is enough to set only delta for update Realm object?Android,Realm:仅设置更新 Realm 对象的增量就足够了吗?
【发布时间】:2017-08-19 15:59:46
【问题描述】:

境界 3.5.0

我的 Android 应用程序必须从 json 创建/更新 Realm 对象。

这里是 POJO:

public class Person extends RealmObject {
    @PrimaryKey
    private int id;
    @Required
    private String name;
    private String address;
    private String contacts;   
}

这里 sn-p 从 json 创建/更新 Realm 对象:

 public void addOrUpdatePerson(final String personASJson) {
        Realm realm = Realm.getDefaultInstance();

        realm.executeTransactionAsync(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                realm.createOrUpdateObjectFromJson(Person.class, personASJson);

            }
        });
    }

我的步骤:

  1. 我想创建新的Person
  2. 结果我有下一个 json:

    {"id": 1, "address": "Address 1", "name": "Person 1", "contacts": "我的联系人"}

  3. 调用方法“addOrUpdatePerson”并在 Realm 上成功创建新的 Person。 好的!

  4. 现在我想更改同一 Person 中“联系人”字段的内容。

  5. 所以我创建了新的 json:

    {"id": 1, "address": "Address 1", "name": "Person 1", "contacts": "我的新联系人"}

  6. 调用方法“addOrUpdatePerson”和Person成功更新为字段“contacts”的新值。好的!

但是当我需要更新存在 Person 我不想传递整个 json。

但我只想通过增量。 所以对于更新存在 Person 我可以使用下一个 json:

{"id": 1,  "contacts": "My SUPER NEW contacts"}

如您所见,我只传递了 Person id 和 delta(字段“contacts”)。

我再次使用此 json 调用方法“addOrUpdatePerson”,并使用字段“contacts”的新值更新了 Person 成功。好的!

我将确认要更新 Realm 中的对象,我只能使用 Person.id 设置增量。不需要设置 WHOLE json。

对吗?

【问题讨论】:

    标签: android realm


    【解决方案1】:

    是的,没错。我们的 JSON 方法可以使用部分定义的 JSON 结构。任何未设置的字段都将被忽略。

    【讨论】:

    • 这对于方法 "realm.copyToRealmOrUpdate(myPojo)" 也正确吗?对吗?
    • 方法“createOrUpdateObjectFromJson”仅在映射 1:1 时有效。在另一种情况下,方法“createOrUpdateObjectFromJson”触发异常:“无法为 Realm DB 映射 json”
    • 名称必须匹配,是的,但并非所有字段都需要存在
    • 我的 POJO 有自定义 json 反序列化器。 Realm 是否有类似“createOrUpdateObjectFromJson(pojo, deserializer)”的方法?这样就可以解决问题了。
    猜你喜欢
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多