我正在尝试从我的 ios Swift 项目中的 Firestore 数据库中获取数据

Posted

技术标签:

【中文标题】我正在尝试从我的 ios Swift 项目中的 Firestore 数据库中获取数据【英文标题】:I am trying to fetch data from Firestore database in my ios Swift Project 【发布时间】:2018-05-25 09:06:28 【问题描述】:

我想从订阅集合团队获取数据。

我正在尝试以下代码:

db.collection("subscriptions").addSnapshotListener  querySnapshot, error in
    guard let snapshot = querySnapshot else 
        print("Error retreiving snapshots \(error!)")
        return
    

    //print("Current data: \(snapshot.documents.map  $0.data() )")

    for document in snapshot.documents
        print(document.data())
    

我的代码输出

所以,就我而言,我能够获取集合的数据但无法从团队获取数据,请帮助我,感谢支持

【问题讨论】:

你不能直接通过document.data()["team"] as? [String: Any] 获取团队信息吗? 仅供参考使用getDocuments函数而不是addSnapshotListener 感谢您的支持和回复,现在只需要 team 的 office id,这是输出。可选的(["developer@ratufa.com": name = "Developer Ratufa"; officeId = myuPlTBO8sEM4SOQ8rWY; , "judd.flamm@whitecoatlabs.io": officeId = myuPlTBO8sEM4SOQ8rWY; ]) @Pankaj99 这是一本字典,你可以得到它。有什么问题? @TheTiger 先生,我想获取办公室 ID 和名称,因为我是 Firestore 的新手,并且在 ios 中也比较新鲜。这是一个普通的应用程序,我必须在其中获取一些数据以验证只有那些数据存在于 firestore 中的人(意味着只有那些可以登录其数据存在于数据库中的人),并且登录后数据应该在表视图中可见。 【参考方案1】:

如果您不想监听每个事件,请使用 getDocuments 方法而不是 addSnapshotListener

/// This will give you team data
document.data()["team"]

在从 firestore 获得 team 信息后。以下是获取nameofficeId的方法:

if let teamInfo = document.data()["team"] as? [String: Any] 
   let teams = teamInfo.map $0.value
   for team in teams 
       guard let validTeam = team as? Dictionary<String, Any> else continue
       let name = validTeam["name"] as? String ?? ""
       let officeId = validTeam["officeId"] as? String ?? ""
       print("name: \(name), officeId: \(officeId)")
   

输出

name: Developer Ratufa, officeId: myuPlTBO8sEM4SOQ8rWY
name: , officeId: myuPlTBO8sEM4SOQ8rWY

【讨论】:

以上是关于我正在尝试从我的 ios Swift 项目中的 Firestore 数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用swift和ios使firebase sdk中的旧消息过期

在 swift iOS 中管理用户登录序列

在通知标题中显示函数结果(Swift 3,iOS10)[关闭]

从测试目标看不到 Swift 类

Swift:尝试从我的应用程序中打开 Safari 浏览器中的 URL 时出现“快照尚未呈现的视图..”错误

Swift 中的项目符号列表 - iOS