Android,Realm:足以为更新Realm对象设置delta吗?

时间:2017-08-19 15:59:47

标签: android realm

Realm 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;   
}

这里从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. 我想创建新的
  2. 结果我有下一个json:

    {" id":1,"地址":"地址1","名称":"人1","联系人":"我的联系人"}

  3. 致电方法" addOrUpdatePerson "在Realm上创建新的人员成功。 OK!

  4. 现在我想更改字段内容"联系人"在同一个中。

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

    {" id":1,"地址":"地址1","名称":"人1","联系人":"我的新联系人"}

  6. 致电方法" addOrUpdatePerson " 成功更新了字段的新值" 联系人"。 OK!

  7. 但是当我需要更新存在时,我不想传递WHOLE json。

    但我想传递的只是delta。 所以对于更新存在我可以使用下一个json:

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

    正如您所看到的,我只传递了人 ID 且只传递了delta(字段" 联系人")。

    我再次调用方法" addOrUpdatePerson "这个json和成功更新了字段" 联系人"的新值。 OK!

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

    这是对的吗?

1 个答案:

答案 0 :(得分:0)

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