findFirstAsync () возвращает «недопустимый объект», но findFirst () или findAllAsync () работают - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать асинхронный вызов Realm, используя findFirstAsync.

Realm.getDefaultInstance().where<MyModel>().findFirstAsync()

Но это всегда приводит к «недопустимому объекту» (он не падает, но возвращенный объект возвращает false on isValid()).

Это проблема, потому что я хочу использовать LiveRealmObject , который проверяет наличие isValid() в конструкторе.

С другой стороны,синхронный findFirst() работает (поэтому запрос правильный) и findAllAsync() также работает правильно (и поэтому LiveRealmResults ).


Обходной путь (который я в настоящее время использую)) должен использовать findAllAsync() и получить первую запись, используя firstOrNull() в слушателе (LiveData-Observer).

Но было бы чище возвращать только один элемент, когда нужен только один.Кроме того, я думаю, что где-то есть ошибка, так что давайте исправим ее.

1 Ответ

0 голосов
/ 22 июля 2019

AFAIK Единственный возможный способ сделать это, используя LiveRealmResults, как вы сказали, просто ограничить результат до 1, используя limit(1)

...