gpt4 book ai didi

swift - 没有 'items' 候选产生预期的上下文结果类型 '(Observable<[Product]>) -> (_) -> _'

转载 作者:可可西里 更新时间:2023-11-01 00:35:48 24 4
gpt4 key购买 nike

这是我的代码片段:

class ProductCategoryCell: UITableViewCell {

@IBOutlet weak var collectionViewProducts: UICollectionView!

// other stuff...

func setProducts() {
let productsObservable = Observable.just([
Product(name: "test", price: 10.0),
Product(name: "test", price: 10.0),
Product(name: "test", price: 10.0)
])

productsObservable.bindTo(collectionViewProducts.rx.items(cellIdentifier: "ProductCell", cellType: ProductCell.self)) {
(row, element, cell) in
cell.setProduct(element)
}.disposed(by: disposeBag)
}
}

它给我一个构建错误:

No 'items' candidates produce the expected contextual result type '(Observable<[Product]>) -> (_) -> _'

在我的 View Controller 中,我使用类似的代码填充 TableView :

let productsObservable = Observable.just(testProducts)
productsObservable.bindTo(tableViewProducts.rx.items(cellIdentifier: "ProductCategoryCell", cellType: ProductCategoryCell.self)) { (row, element, cell) in
cell.setCategory(category: element)
}.disposed(by: disposeBag)

此代码正常工作。我做错了什么?

最佳答案

我能够重现您收到的错误消息。您没有发布 ProductCellsetProduct() 方法的代码,但我想您可能遇到了与我相同的问题。

这是我的虚拟 ProductCell 实现:

class ProductCell: UICollectionViewCell {
func setProduct(product: Product) {
// do stuff
}
}

现在,当我在您的答案中使用代码时:

productsObservable.bindTo(collectionViewProducts.rx.items(cellIdentifier: "ProductCell", cellType: ProductCell.self)) { (row, element, cell) in
cell.setProduct(element)
}
.disposed(by: disposeBag)

我得到了和你一样的错误:

No 'items' candidates produce the expected contextual result type '(Observable<[Product]>) -> (_) -> _'

在我的例子中,问题是我在调用 setProduct:

时忘记了参数标签 product

添加参数标签后,代码编译无误:

productsObservable.bindTo(collectionViewProducts.rx.items(cellIdentifier: "ProductCell", cellType: ProductCell.self)) { (row, element, cell) in
cell.setProduct(product: element)
}
.disposed(by: disposeBag)

在这种情况下,编译器的错误消息非常具有误导性。当您尝试在闭包之外调用 setProduct(element) 时,您会收到正确的错误消息:

Missing argument label 'product:' in call

但不知何故,当他在闭包内时,编译器并没有意识到问题到底是什么。

正如我之前提到的,我不知道你是如何在你的 ProductCell 中实现 setProduct 的,但是因为你正在调用 cell.setCategory(category: element) 在您的 UITableView 示例中,我假设您的问题是在您调用 cell.setProduct(element)

时缺少参数标签

关于swift - 没有 'items' 候选产生预期的上下文结果类型 '(Observable<[Product]>) -> (_) -> _',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007909/

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