我的Cloud Firestore数据库中有一个名为“体验”的对象数组。每个体验都有一个usernamedate等,并且“体验”列表中可以有多个体验。如何访问“体验”数组的特定字段?我知道在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>对象。

10-06 09:34