Swiftui + Firestore - 无法访问 Firestore 中的字段

Posted

技术标签:

【中文标题】Swiftui + Firestore - 无法访问 Firestore 中的字段【英文标题】:Swiftui + Firestore - Cannot access field in Firestore 【发布时间】:2020-06-21 20:38:11 【问题描述】:

尝试访问 Firestore 中的特定字段,但似乎无法弄清楚。在我的文档中,我有一张这样的地图:

以下是我的代码。由于某种原因,小时只是返回零。我尝试了许多不同的方法,包括 ["notificationTime"]["hour"],但似乎无法弄清楚。任何的想法?谢谢!

self.db.collection("routines").whereField("name", isEqualTo: routineName).getDocuments()  (querySnapshot, err) in
        if let err = err 
            print ("Error getting documents: \(err)")
         else 
            for document in querySnapshot!.documents 
                let hour = document.data()["notificationTime.hour"]
                print(hour)
                return
             
        
    

【问题讨论】:

你能记录document.data()吗? 【参考方案1】:

要从地图中读取数据,请使用以下方法:

let db = Firestore.firestore()
db.collection("routines").whereField("name", isEqualTo: routineName).getDocuments()  (querySnapshot, err) in
  if let err = err 
    print("Error getting documents: \(err)")
   
  else if let querySnapshot = querySnapshot 
    for document in querySnapshot.documents 
      let results = document.data()
      if let notificationTime = results["notificationTime"] as? [String: Any] 
        let hour = notificationTime["hour"] as? Int ?? 0
        let minute = notificationTime["minute"] as? Int ?? 0
        // ... further handling of your data
      
    
  

话虽如此,我想建议查看Timestamps 以存储与日期时间相关的数据。有关详细信息,请参阅documentation。

【讨论】:

以上是关于Swiftui + Firestore - 无法访问 Firestore 中的字段的主要内容,如果未能解决你的问题,请参考以下文章

无法在 SwiftUI 按钮视图中从 Cloud Firestore 获取数据

使用 SwiftUI 从 Cloud Firestore 中的集合“配置文件”中获取数据。无法将类型“[String:Any]”的值分配给类型“UserProfile”

如何使用 SwiftUI 将值数组写入 Firestore

视图模型中的 Firestore 方法未在 SwiftUI onAppear 方法中调用

SwiftUI + Firestore - 基于从 Firestore 返回的数组的过滤器列表

SwiftUI+Firestore 中的多选列表