Swift错误:表达式类型不明确,没有更多上下文

时间:2020-09-01 23:04:02

标签: swift firebase swiftui

我正在尝试在SwiftUI中创建Zomato克隆。当我尝试遍历Firebase Firestore DB中的项目时,发生错误。该代码中出现错误:

let product = Product(name: productName, price: productPrice)

这是完整的代码:https://github.com/MysteryCoder456/VegieMato/blob/backend/VegieMato/TabViews/HomeView.swift#L57

2 个答案:

答案 0 :(得分:1)

您的productObjects被声明为let常量,如果要向其添加项,则必须为var

let productObjects: Array<Product> = [] // <--- Change to a var
    for prod in vendorProducts {
        let productName = prod["name"]
        let productPrice = prod["price"]
        let product = Product(name: productName, price: productPrice)
        productObjects.append(product)
}

答案 1 :(得分:1)

由于prod值已定义为[String:Any],因此您的productName和productPrice值将被解释为Any数据类型。因此,必须在创建Product实例之前对其进行正确的投射。

if let productName = prod[“name”] as? String, 
   let productPrice = prod[“price”] as? Int {
   let product = Product(name: productName, price: productPrice)
   productObjects.append(product) 
}