【发布时间】:2021-11-11 00:49:51
【问题描述】:
在这一行DispatchQueue.main.async 我得到这个错误:
没有更多上下文的表达类型是模棱两可的
import Foundation
class ProductListViewModel: ObservableObject {
@Published var productList = [Product]()
let webService = WebService()
func downloadData(url: URL) async {
do {
let product = try await webService.getData(url: url)
DispatchQueue.main.async {
self.productList = product.map(ProductViewModel.init)
}
} catch {
print("error")
}
}
}
struct ProductViewModel {
let productModel: Product
var id: Int {
productModel.id
}
var title: String {
productModel.title
}
var price: Double {
productModel.price
}
var description: String {
productModel.description
}
var category: Category {
productModel.category
}
var imageUrl: String {
productModel.imageUrl
}
var rating: Rating {
productModel.rating
}
}
struct WebService {
func getData(url: URL) async throws -> [Product] {
let (data, _) = try await URLSession.shared.data(from: url)
let product = try? JSONDecoder().decode([Product].self, from: data)
return product ?? []
}
}
【问题讨论】:
-
请包含代码,而不是代码图片,不能被屏幕阅读器复制/粘贴、搜索或阅读
-
好吧,对不起。我编辑了
-
向我们展示 WebService。向我们展示 ProductViewModel。告诉我们
productList。您向我们展示的代码中应该没有未知数。请阅读如何提供minimal reproducible example。 -
感谢您的建议。我是新用户和程序员。我会学习steakoverflow
-
你最后做得很好!干得好。