Firebase Firestore не позволяет хранить LinkedHashMaps - Android - PullRequest
0 голосов
/ 20 марта 2020

Я храню несколько пользовательских объектов в моей базе данных Firebase FireStore, без проблем при добавлении их в документ, и я могу на самом деле проверить с консоли, что они там есть, они сохранили свою структуру, и они хороши для go.

Однако, когда я пытаюсь получить используемый класс:

val class = snapshot.toObject(Class::class.java)

я получаю сообщение об ошибке:

java .lang.IllegalArgumentException: метод имя_проекта.setFieldsHashMap аргумент 1 имеет тип java .util.LinkedHashMap, получил java .util.HashMap

Я ничего не нашел, прочитал в паре мест, где FireStore не упорядочивает элементы, но никогда не читайте, что FireStore явно не позволяет LinkedHashMaps. И последнее, когда я просматриваю документ в firestore всех форм Maps go под именем Maps, он не указывает, какой тип, поэтому я чувствовал, что при загрузке уже игнорировал порядок, я просто не вижу кто-нибудь с такой же проблемой.

Я изменил все свои LinkedHashMaps на HashMaps, и это сработало, поэтому, прежде чем изменять все в моем коде, чтобы учесть это, было бы здорово получить подтверждение или какое-либо понимание этого.

1 Ответ

0 голосов
/ 20 марта 2020

LinkedHashMap не совсем точный тип данных для полей объекта Firestore. LinkedHashMap налагает порядок на записи в карте. Однако Firestore не накладывает никакого порядка на свойства поля типа карты. Итак, если вы записали все записи из LinkedHashMap в объект Firestore, а затем прочитали его обратно, вы потеряете все упорядочение. Поэтому вы должны использовать HashMap, поскольку он представляет собой простой набор пар ключ / значение без порядка.

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