android - 从 Firestore 文档中逐行设置字段是否会读取反模式?
问题描述
我在 Firestore 上有一个文档,我从中读取了片段中的字段。因为它有很多字段,所以我在承载这个片段的 Activity 中设置了变量,以便我可以在其他片段之间传递数据。为了实现这一点,我意识到我必须一遍又一遍地编写类似的代码行,这让我开始思考是否有更好的方法。
我想到了两种可能的解决方案:
- 以 JSON 格式构建所有这些字段 -> 在 Firestore 的文档系统 imo 中不适合的内容
- 将所有这些字段放入我保留在活动中的可序列化数据类中,然后将其传递给片段包 - > 似乎很复杂,我仍然必须将 it.get(foo) 编写为每个字段的栏类的构造函数。
鉴于所有这些,最好的方法是什么?提前致谢。
解决方案
关于如何处理这个问题,您有多种选择。没有比另一个更好的了。最终,您将选择最适合您的需求和偏好的一种。
- 你可以做你现在正在做的事情。
- 您可以更进一步,实际检查值的类型,而不是盲目地强制转换它们(如果它们不匹配,则会在运行时导致崩溃)。
- 您可以向get(String, Class<T>)提供一个 Class 对象,该对象可以自动将字段映射到 T 类型的新对象中的属性,只要类型也匹配。
- 您可以调用各种特定类型的 get 版本,例如getString()
最终,您将不得不决定是要信任快照中的内容并允许错误发生,还是不信任任何内容并检查所有内容。由你决定。
推荐阅读
- bash - 我将如何在 bash 中编写脚本来检查 grep 是否找到所需的字符串
- c - 为什么只有在 codechef 中运行我的代码时才会出现分段错误?
- c++ - 为什么我不能打印字符串?
- python - python中递归zip文件解压
- typescript - 您如何验证打字稿中“未知”类型参数的属性?
- mysql - 在mysql中将日期存储为字符串是否安全?
- youtube-api - Youtube Data Api V3 - 突然“每天查询数”已从 300 000 重置为 0
- flutter - 新的 Flutter 项目未在 VS Code 中打开
- python - 将图形界面相互叠加
- python - 如何从 Python 调用 Rust 异步方法?