gpt4 book ai didi

swift - 我如何在我的 firebase 数据库中转换一个可能有两种不同类型的引用

转载 作者:行者123 更新时间:2023-11-28 05:37:28 25 4
gpt4 key购买 nike

我正在尝试通过快照方法(?)引用我的数据库中的某些内容。

我正在创建一个小型披萨应用

ref.child("Resturants").child("Da GiGi").child("pizzas").observeSingleEvent(of:.value, with: {(snapshot) in
for granchild in (snapshot.children){
let pizzaSnap = granchild as! DataSnapshot
let dict = pizzaSnap.value as! [String: String??] // I get an error here: "Thread 1: signal SIGABRT"

let nameUse = dict["name"] as? String
let priceUse = dict["price"] as? String
let toppingsUse = dict["toppings"] as? String

}
}

在我的 firebase 数据库中,名称和配料周围有“”,但价格周围没有,这意味着价格不是字符串类型。如果我将价格类型更改为字符串类型,我的代码就可以工作。

我试图消除let dict:

ref.child("Resturants").child("Da GiGi").child("pizzas").observeSingleEvent(of:.value, with: {(snapshot) in
for granchild in (snapshot.children){
let pizzaSnap = granchild as! DataSnapshot

let nameUse = pizzaSnap.value["name"] as? String
let priceUse = pizzaSnap.value["price"] as? String
let toppingsUse = pizzaSnap.value["toppings"] as? String

}
}

但现在我显然得到了一些错误。

我该如何解决这个问题?

最佳答案

您需要做的是拥有类型为 [String:Any] 的字典,而不是 [String:String]:

ref.child("Resturants").child("Da GiGi").child("pizzas").observeSingleEvent(of:.value, with: {(snapshot) in
for granchild in (snapshot.children){
let pizzaSnap = granchild as! DataSnapshot
let dict = pizzaSnap.value as! [String:Any] //Should no longer get an error

let nameUse = dict["name"] as? String
let priceUse = dict["price"] as? Float
let toppingsUse = dict["toppings"] as? String


}
}

如果您的价格实际上存储为 String,例如 "18.49",那么您可以将该值转换为 [String:String ]。但是只要字典有多个值,您就会希望字典的值类型为 Any,例如:[String:Any]

如您所见,我们还将价格转换为非整数而不是 String,在本例中为 Float。如果此转换失败,请尝试将价格转换为 CGFloatDouble

关于swift - 我如何在我的 firebase 数据库中转换一个可能有两种不同类型的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58191735/

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