Как вы используете copyToRealmOrUpdate для списка? - PullRequest
0 голосов
/ 12 ноября 2018

Это код в моем приложении для Android:

public class Offer extends RealmObject {
    @PrimaryKey
    private long id;

}

В моем классе обслуживания:

  RealmList<Offer> currentLocalMerchantOfferList = currentLocalMerchant.getOffers();
   RealmList<Offer> findIncomingMerchantOfferList = findIncomingMerchant.getOffers();
                                if (!EqualsUtil.areEqual(currentLocalMerchantOfferList, findIncomingMerchantOfferList)) {
                                    currentLocalMerchant.setOffers(findIncomingMerchantOfferList == null ? null : realm.copyToRealmOrUpdate(findIncomingMerchantOfferList));
                                }

Я получаю compile Ошибка:

error: incompatible types: bad type in conditional expression
                                currentLocalMerchant.setOffers(findIncomingMerchantOfferList == null ? null : realm.copyToRealmOrUpdate(findIncomingMerchantOfferList));

Правильно ли я использую copyToRealmOrUpdate? Если нет, то как вы правильно его используете?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

realm.copyToRealmOrUpdate(findIncomingMerchantOfferList) возвращает List<T>, а не RealmList<T>.

RealmList представляет many-relationship для другого типа объекта. Следовательно, эти случайно вставленные объекты не являются множественными отношениями, поэтому они не являются RealmList.

На самом деле они возвращаются как ArrayList.

Вы можете изменить код для размещения:

currentLocalMerchant.getOffers().clear();
currentLocalMerchant.getOffers().addAll(realm.copyToRealmOrUpdate(findIncomingMerchantOfferList));
0 голосов
/ 12 ноября 2018

Я думаю, вам не нужно использовать метод copyToRealmOrUpdate для установки значения. Просто установите значение, которое у вас есть

 if (!EqualsUtil.areEqual(currentLocalMerchantOfferList, findIncomingMerchantOfferList)) {
                                        currentLocalMerchant.setOffers(findIncomingMerchantOfferList)
                                    }

Если findIncomingMerchant.getOffers () вернет вам постоянные данные, тогда они будут отлично работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...