Когда вы добавляете массив пользовательских объектов (Experience) в базу данных Cloud Firestore, он будет добавлен в базу данных в виде списка.Если ваша база данных выглядит следующим образом:
Firestore-root
|
--- myCollection (collection)
|
--- myDocument (document)
|
--- experiences (array)
|
--- 0 (Experience object)
| |
| --- username: "UserName"
| |
| --- date: May 25, 2019 at 12:12:12 PM UTC+3
|
--- 1 (Experience object)
|
--- username: "AnotherUserName"
|
--- date: May 24, 2019 at 13:13:13 PM UTC+3
Обратите внимание, что в настоящее время невозможно получить список пользовательских объектов (опыта), просто получая данные из свойства experiences
.При использовании:
List<Object> list = (List<Object>) document.get("experiences");
Object item = list.get(yourIndex);
Объект item
на самом деле является HashMap
, а не Experience
объектом.Я написал приведенные выше строки кода на Java, чтобы вы могли видеть тип возвращаемого значения более четко.Поэтому строка, подобная следующей:
val experience: Experience = (list[yourIndex] as Experience).username
не будет работать.Если вы попытаетесь привести этот HashMap
к Experience
объекту, вы получите ошибку, которая выглядит следующим образом:
java.lang.ClassCastException: java.util.HashMap не может быть приведенв com.example.Experience
Итак, чтобы решить эту проблему, вам придется написать собственный код, который поможет вам преобразовать объект HashMap
в объект Experience
.Более того, если вам нужен List<Experience>
, вам также необходимо преобразовать List<HashMap>
объекты в List<Experience>
объекты.