Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.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
Objective c 如何从swift向目标c类传递可选值_Objective C_Swift_Optional - Fatal编程技术网

Objective c 如何从swift向目标c类传递可选值

Objective c 如何从swift向目标c类传递可选值,objective-c,swift,optional,Objective C,Swift,Optional,下面是我的代码 var img = self.appDelegate.loadImageFromCache(imageURL)! if (img != nil) { cell.imageArray.append(img!) } 即使img对象可用,我也会得到错误信息 “致命错误:在展开可选值时意外发现nil” My cell类是一个objective c类,imageArray是一个属性。您做错了。首先强制展开可选值(第1行),然后检查它是否为零。如果它是零,那么它在第1行爆炸。如果不

下面是我的代码

var img = self.appDelegate.loadImageFromCache(imageURL)!
if (img != nil) {
    cell.imageArray.append(img!)
}
即使img对象可用,我也会得到错误信息

“致命错误:在展开可选值时意外发现nil”


My cell类是一个objective c类,imageArray是一个属性。

您做错了。首先强制展开可选值(第1行),然后检查它是否为零。如果它是零,那么它在第1行爆炸。如果不是,则不需要在第2行中进行检查。以下是正确的书写方法:

if let image = self.appDelegate.loadImageFromCache(imageURL) {
    cell.imageArray.append(image)
}
if let语句尝试展开表达式的结果,如果可以,则将结果指定给image。然后执行内部的代码。如果不能,则省略If let语句

编辑:您必须检查所有来自objective-c的内容。所以重写它

if let image = self.appDelegate.loadImageFromCache(imageURL) {
        cell.imageArray?.append(image)
    }

可能cell或cell.imageArray为零。感谢您提供第二个解决方案。我已经尝试了第一个解决方案,但也失败了,这就是你在这里发布的。再次感谢你。即使它现在起作用了,也不意味着一切都好。可能您现在的代码中有一个bug。imageArray为nil,其中未存储任何内容。