gpt4 book ai didi

ios - 我正在尝试创建自定义 firebase 数据库类,但不断出现错误

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

我正在尝试创建自定义 Firebase 数据库类。我正在尝试使用observeSingleEvent 函数从数据库中提取数据并将其分配给一个变量并返回该变量。问题是我出现错误“ fatal error :在展开可选值时意外发现 nil”,但我知道我的代码可以工作,因为我在该类之外使用它。这是我声明类变量以及调用它的位置。

class MainMenuController: UIViewController {
var db: DataBase!

func readCheckings() {
self.checkAmLbl.text = db.readMonth()!
}
}

这是我的数据库类:

class DataBase {

private var ref: DatabaseReference {
return Database.database().reference()
}

var uid: String? = (Auth.auth().currentUser?.uid)!


func readMonth() -> String? {
var check: String? = ""
self.ref.child("Account Data").child(uid!).child("November 2017").observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as! NSDictionary
let checkings = value["Checkings"] as! Double
check = String(checkings)
})
return check
}

}

最佳答案

错误出在readMonth()方法设计中。您需要等待 Firebase 完成,然后才能返回检查值。

试试这个:

func readMonth(completion: @escaping (String?) -> Void) {
self.ref.child("Account Data").child(uid!).child("November 2017").observeSingleEvent(of: .value) {
(snapshot) in
let value = snapshot.value as! NSDictionary
let checkings = value["Checkings"] as! Double
let check = String(checkings)
completion(check)
}
}

然后这样调用它:

func readCheckings() {
db.readMonth { (check) in
self.checkAmLbl.text = check!
}
}

关于ios - 我正在尝试创建自定义 firebase 数据库类,但不断出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880334/

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