gpt4 book ai didi

swift - 如何从 Firebase getDocument 函数中写入变量 (Swift)

转载 作者:行者123 更新时间:2023-12-04 15:35:50 26 4
gpt4 key购买 nike

我想读取一个文档,从该文档中获取一个字段,并将一个变量设置为该字段的值

我希望在 Firebase getDocument 函数之外声明的变量被写入。实际结果是变量被写入 Firebase getDocument 函数内,但在函数外它是空的。

这是我尝试过的:

[1]: Modifying variable within firebase function - 这对我不起作用,因为我无法用我目前的 Swift 技能很好地翻译它

[2]: How to set variables from a Firebase snapshot (swift) - 这对我不起作用,因为实现与我现在所拥有的相差很多


//open the user Firebase database by documentID
let userDocument = userdb.collection("users").document(userDocumentId)

var userjobsData = [[String:Any]]()

userDocument.getDocument { (docums, error) in

if let docum = docums, docum.exists {

//grab all jobs data
userjobsData = docum.get("jobData") as! [[String:Any]]

//sort jobs by category in alphabetical order
userjobsData = (userjobsData as NSArray).sortedArray(using: [NSSortDescriptor(key: "category", ascending: true)]) as! [[String:AnyObject]]

}
//Here userjobsData contains data
print(userjobsData)
}
//Here userjobsData is empty
print(userjobsData)

最佳答案

实际上在你的情况下 Firebase 获取数据是 异步任务 并且需要一些时间来获取数据,与此同时你正在阅读你的 userjobsData 为空,因为 Firebase 请求尚未完成。

您可以做的是在从 firebase 获取数据后实际执行所需的操作。

添加示例代码供您引用。

private func fetchDataFromFirebase(){

let userDocument = userdb.collection("users").document(userDocumentId)

var userjobsData = [[String:Any]]()

userDocument.getDocument { (docums, error) in

if let docum = docums, docum.exists {

//grab all jobs data
userjobsData = docum.get("jobData") as! [[String:Any]]

//sort jobs by category in alphabetical order
userjobsData = (userjobsData as NSArray).sortedArray(using: [NSSortDescriptor(key: "category", ascending: true)]) as! [[String:AnyObject]]

self.perfomAction(firebaseResult : userjobsData)
// now pass this data to your need function like
}

}
}

private func perfomAction(firebaseResult : [[String:Any]]){
// perform your job here
}

关于swift - 如何从 Firebase getDocument 函数中写入变量 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59796930/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com