我的Cloud Firestore数据库中有一个名为“体验”的对象数组。每个体验都有一个username
,date
等,并且“体验”列表中可以有多个体验。如何访问“体验”数组的特定字段?我知道在Dart中,我可以输入以下内容:
querySnapshot.documents[i].data["Experience"][number of array item]["username"]
但是我如何在Kotlin中做同样的事情?
最佳答案
将自定义(体验)对象的数组添加到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
对象,则会出现如下错误:因此,要解决此问题,您必须编写自己的代码,这可以帮助您将
HashMap
对象转换为Experience
对象。此外,如果需要List<Experience>
,则还需要将List<HashMap>
对象转换为List<Experience>
对象。