如何从swift传递可选值到Objective c类

时间:2015-02-07 08:33:23

标签: objective-c swift optional

以下是我的代码

var img = self.appDelegate.loadImageFromCache(imageURL)!
if (img != nil) {
    cell.imageArray.append(img!)
}

即使img对象可用,我也会收到错误

  

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

我的单元格类是一个客观的c类,imageArray是一个属性。

1 个答案:

答案 0 :(得分:1)

你做错了。首先,您强制解包可选值(第1行),然后检查它是否为零。如果它是零,那么它会在第1行爆炸。如果它不是,那么你不需要在第2行检查它。这是写这个的正确方法:

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

if let语句尝试解包表达式的结果,如果可以,则将结果赋给image。如果let,则执行里面的代码。如果它不能省略if let statment。

编辑:你必须检查一切来自objective-c。所以改写它

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