如何处理 SwiftUI 中另一个地图内的 Firestore 地图/数组数据?

问题描述 投票:0回答:1

我是 Firestore/Firebase、Swift 和 SwiftUI 的新手,因此对于我在提出问题/编码期间犯下的任何简单错误深表歉意

我正在制作一个健身应用程序,目前正在尝试显示用户的锻炼计划。我已经能够执行简单的选择,例如来自 firestore 的计划名称,但练习位于“练习”地图内,其中包含每个练习及其相关数据,每个练习都有自己的地图:

as so

不确定这是否是正确的做法,但这就是我来这里的原因

This is my current PlansViewModel code

之所以这是一张地图,是因为我将这些计划用于“实时培训”功能,其中每个计划都会被演练。因此,我需要在每个计划中进行多个练习,这些练习都有自己的数据(正如您在数据库屏幕截图中看到的那样),并且您不能(据我所知)在数组中存储数组

“名称”和“用户”选择语句按预期工作,但当我习惯 SQL 时,将映射、数组和引用带入等式中以了解如何显示它们,我会感到困惑

我尝试从简单开始并仅显示数据库中的ExerciseName:

 return Plans(id: d.documentID,
              Name: d["Name"] as? String ?? "",
              User: (d["User"] as? DocumentReference)?.documentID ?? "",
              ExerciseName: d["ExerciseName"] as? String ?? ""

因为我已经在 PlansView 上显示用户通过 for 循环分配给他们的每个计划:

ForEach(model.list, id: \.id) { item in
                VStack(alignment: .leading,
                       spacing: 16) {
                    Text(item.Name)
                        .font(.title3)
                        .bold()
                    Group{
                        Text("Exercises:")
                            .font(.subheadline)
                            .bold()
                        Text(item.ExerciseName)
                            .font(.subheadline)
                    }}

但是没有显示任何项目

我知道这是因为我没有参考地图,但我不知道如何正确编写它

swift firebase google-cloud-firestore swiftui
1个回答
0
投票

很高兴您正在学习 Swift 和 Firebase!当我看到你的文字和代码时,我认为你需要一些好的阅读技巧。 Peter Friese 重点关注 Firebase 和 SwiftUI,可以在 youtube 和网站上找到。 Peter 关于“在 Swift 中映射 Firestore 数据”的文章是必读和理解的。在那里您将学习如何保存和读回模型数据(结构)。建议 2:如果您还没有观看 Firebase 视频系列,我推荐整个系列。由于 Firebase 不是 SQL 而是 NoSQL,因此这里有一个“选择数据结构”的链接。建议3:我认为你应该结束你的问题,当你了解更多后,再提出一个不太广泛的问题。还有一个 Firebase Community Slack 小组来补充该论坛。 /马丁

© www.soinside.com 2019 - 2024. All rights reserved.