Swift 无法转换类型为';附加产品';到预期的参数类型';productsCollectionViewCell.Product';
我正在做一个项目,它将创建一个集合视图。我的集合视图类是Swift 无法转换类型为';附加产品';到预期的参数类型';productsCollectionViewCell.Product';,swift,xcode,Swift,Xcode,我正在做一个项目,它将创建一个集合视图。我的集合视图类是productsCollectionViewCell,struct是Product。但是我得到了错误 条件绑定的初始值设定项必须具有可选类型,而不是“productsCollectionViewCell”。我试图删除作为,但它不起作用。与此相关的ifx是什么?as对类型productsCollectionViewCell执行强制转换,并返回非可选值。如果程序失败,它将使程序崩溃 您可能正在寻找as?,它返回可选的,这是guard let执行
productsCollectionViewCell
,struct
是Product
。但是我得到了错误
条件绑定的初始值设定项必须具有可选类型,而不是“productsCollectionViewCell”。我试图删除
作为代码>,但它不起作用。与此相关的ifx是什么?as
对类型productsCollectionViewCell
执行强制转换,并返回非可选值。如果程序失败,它将使程序崩溃
您可能正在寻找as?
,它返回可选的,这是guard let
执行可选绑定所必需的
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "productsCollectionViewCell", for: indexPath) as? productsCollectionViewCell else {
其他说明:
- 在Swift中,通常类型是大写的,变量/属性是小写的,因此
productsCollectionViewCell
应该是productsCollectionViewCell
- 您可能在下一行有一个输入错误——您是指
产品
而不是产品
(例如变量而不是类型)?:
因此,如果我使用as?
而不是as
,它确实解决了问题,但我遇到另一个错误,类型“addItem.Product”在cell.setup上没有成员“subscript”
(带有:Product[indexPath.row])
(为了清楚起见,我还编辑了文章)。我相信将用作?
是正确的,那么如何修复另一个错误呢?我也不知道房产通常是资本化的,我会从现在开始记住这一点!阅读我的全部答案——它也解决了另一个错误。此外,房地产通常不是资本化的——相反。类型是大写的,变量和属性是小写的。我不太确定,因为我是初学者,但它应该是Product
,因为这是我的struct
,不是吗?当我使用products时,我得到错误无法将类型为'addItem.Product'的值转换为预期的参数类型'productsCollectionViewCell.Product'
。如果你得到错误,那与你的问题中没有显示的代码有关——我不知道products
是什么类型,或者设置(带:)
采用什么类型。一般来说,由于您使用了上面的products.count
,因此假设您是从同一阵列进行设置的。但是,您永远不会使用带有下标的类型Product
。听起来您在项目中的多个位置定义了struct Product
,现在它们相互冲突。我想,你应该对产品有一个定义。搜索产品
,查看有多少定义。如果您在解决此问题时遇到问题,请添加产品
声明的代码、设置的定义(使用:)
以及您在问题中找到的任何结构产品
。
cell.setup(with: products[indexPath.row]