Проверьте, есть ли какие-либо изменения в объекте realm


Если realmObject из результата имеет измененное значение, есть ли способ его обнаружить?

Account account = mRealmInstance.where(Account.class).equalTo("isLoggedIn", true).findFirst();

account.setName("New Name");

if(account.hasChanged()){ //Is there a realmMethod for this?

}
1 3

1 ответ:

Я бы предположил, что это то, что вы ищете?

RealmChangeListener<Account> listener = new RealmChangeListener() {
    @Override
    public void onChange(Account account) {
        // changes have been made to Account table
    }
}

Account mAccount;

mAccount = mRealmInstance.where(Account.class).equalTo("isLoggedIn", true).findFirst();
if(mAccount != null) {
    mAccount.addChangeListener(listener);
    //assuming I'm in a transaction here
    mAccount.setName("New Name");
}

...

if(mAccount.isValid()) {
    mAccount.removeAllChangeListeners();
}
Хотя я думаю, что RealmChangeListener активируется всякий раз, когда происходит изменение таблицы Account, а не только при изменении этого конкретного объекта.

(EDIT: начиная с Realm 3.1 + прослушиватели объектов realm также являются мелкозернистыми, поэтому они изменяются только при изменении выбранной учетной записи)