gpt4 book ai didi

ios - 如何在另一个函数中使用 FirebaseReference.observeSingleEvent 的变量

转载 作者:行者123 更新时间:2023-11-30 11:58:56 25 4
gpt4 key购买 nike

我想在另一个函数中使用variable_a。实际上,我想将这些数据加载到tableviewcell中。

func readFIRData()  {
var credentials:[String]
let userID = Auth.auth().currentUser?.uid
ref = Database.database().reference().child("usr").child(userID!)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let Name = value?["firstName"] as? String ?? ""
let PhoneNo = value?["mobile"] as? String ?? ""


var variable_a = [Name,PhoneNo]


self.tableView.reloadData()
}) { (error) in
}
}

最佳答案

您的 readFIRData 函数中应该有一个回调(完成处理程序),并在该回调中将 variable_a 作为参数传递。将其解析为您在 TableView 中使用的对象,并在回调中重新加载tableView。

函数应如下所示:

func readFIRData(_ completion: ([Name,PhoneNo]) -> ())  {
var credentials:[String]
let userID = Auth.auth().currentUser?.uid
ref = Database.database().reference().child("usr").child(userID!)
ref.observeSingleEvent(of: .value, with: { (snapshot) in
// Get user value
let value = snapshot.value as? NSDictionary
let Name = value?["firstName"] as? String ?? ""
let PhoneNo = value?["mobile"] as? String ?? ""

var variable_a = [Name,PhoneNo]
completion(variable_a)
}) { (error) in
}
}

然后还有另一个函数将调用 readFIRData 函数:

func requestData() {
readFIRData() { [weak self] data in
guard let `self` = self else { return }
self.data = data
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}

提及如何返回主线程重新加载 tableView。通过 self.data,我假设您将在 TableView 中使用数据来实例化单元格。

关于ios - 如何在另一个函数中使用 FirebaseReference.observeSingleEvent 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47477813/

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