Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 无法转换类型为';附加产品';到预期的参数类型';productsCollectionViewCell.Product';_Swift_Xcode - Fatal编程技术网

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]