我的 Cloud Firestore 数据库中有一组名为 Experience 的对象。每个体验都有一个用户名
、日期
等,体验列表中可以有多个体验。如何访问我的体验数组的特定字段?我知道在 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
中获取数据来获取自定义(体验)对象的列表。属性(property)。使用时:
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 cannot be cast to com.example.Experience
所以要解决这个问题,您必须编写自己的代码,它可以帮助您转换 HashMap
反对 Experience
目的。此外,如果您需要 List<Experience>
,您还需要转换 List<HashMap>
反对 List<Experience>
对象。
关于android - 如何使用/Android Studio/Kotlin 访问 Firebase Firestore 中的数组字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299348/