【发布时间】:2020-07-24 15:04:48
【问题描述】:
我正在尝试从我的 Firestore 数据库中获取一个文档,并根据用户的选择过滤返回的数据。如果用户选择["snapchat", "facebook"],那么我试图只从数据库中获取这些特定值。它应该返回["snapchat": username, "instagram": username, "UID": user UID]。但是,当我打印出函数的返回值时,它只包含“UID”的键值。这是我的代码:
func getMediaInfo(selected: [String]) -> Dictionary<String, String> {
var mediaDict: [String: String] = [:]
let db = Firestore.firestore()
let docRef = db.collection("users").document(Auth.auth().currentUser!.uid)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
let dataDescription = document.data()
for media in selected {
print(media, ":", dataDescription![media]!)
mediaDict[media] = (dataDescription![media]! as! String)
}
} else {
print("Document does not exist")
self.dismiss(animated: true, completion: nil)
}
}
mediaDict["UID"] = Auth.auth().currentUser?.uid
print("Dictionary: ", mediaDict)
return mediaDict
}
我的输出是:
Dictionary: ["UID": "ub8bUMYBbeSPXd8UOdJWKCnbQzJ2"]
Twitter : nrjfjfj
Phone Number : nrnrjrn
Snapchat : hello
如您所见,这些值已正确检索和输出。但是,返回的 mediaDict 仅具有“UID”的键值对。似乎该函数在整个字典被填满之前就返回了。我不确定为什么会发生这种情况,也不确定如何解决这个问题。
【问题讨论】:
标签: ios firebase dictionary google-cloud-firestore