我正在尝试从我的 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
信息后。以下是获取name
和officeId
的方法:
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 3,iOS10)[关闭]