Мои настройки
У меня есть следующие две структуры: объекты:
Код: Выделить всё
class MyRealmObject: RealmObject {
@PrimaryKey
var id: String = ""
var myEmbeddedRealmObjects: RealmList = realmListOf()
}
Код: Выделить всё
class MyEmbeddedRealmObject: EmbeddedRealmObject {
var exampleEmbeddedParam: String = ""
}
Код: Выделить всё
fun observeMyRealmObject(id: String): Flow = realm
.query("id = $0", id)
.first()
.asFlow()
.mapLatest { myRealmObject: MyRealmObject -> myRealmObject.obj }
Когда я теперь обновляю параметр exampleEmbeddedParam любого из MyEmbeddedRealmObject, нового состояния нет выдается обновление для моего Flow.
Я узнал, что существует ограничение по умолчанию для вложенной иерархии, равное 4, для функции .asFlow(), которое я могу преодолеть с помощью keyPaths для функции .asFlow().
Однако, с моей точки зрения, myEmbeddedRealmObjects находится на уровне иерархии 1, поэтому запрос должен получать уведомление при обновлении любого из exampleEmbeddedParam MyEmbeddedRealmObject (уровень 2).
Однако это не тот случай, и только если я добавлю явный параметр keyPaths, например .asFlow(listOf("myEmbeddedRealmObjects.*") или .asFlow(listOf("*.*"), мой запрос выдает обновление.
Вопрос
По умолчанию параметры RealmList или любые другие изменения EmbeddedRealmObject второго уровня игнорируются, если я явно не использую параметры keyPaths файла . asFlow()? И как я могу решить эту проблему, помимо использования явных параметров keyPath для всех запросов, которым необходимо получать обновления из параметров встроенного объекта области?
Любая помощь приветствуется! Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/788 ... ter-is-upd