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

问题描述

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

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

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

解决方法

您的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)
}
,

由于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) 
}