objective-c - 如何从 swift 将可选值传递给 Objective C 类

标签 objective-c swift option-type

下面是我的代码

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

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

"fatal error: unexpectedly found nil while unwrapping an Optional value"

我的单元类是一个 objective-c 类,imageArray 是一个属性。

最佳答案

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

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

if let 语句尝试解开表达式的结果,如果可以的话,它将结果分配给 image。然后执行if let里面的代码。如果不能,则省略 if let 语句。

编辑:你必须检查所有来自 Objective-C 的内容。所以重写一下

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

关于objective-c - 如何从 swift 将可选值传递给 Objective C 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380119/

相关文章:

ios - 为什么当我在平移单元格时更改 UIImageView 的图像时整个 View 会重置一秒钟?

java - 为什么 Java 8 Optional 实现为 final,没有 Some 和 None 层次结构?

swift - 为什么同一 SKNode 层中的对象不相互交互?

ios - 使导航栏显示所需的标题

java - Lambda 内部或Else获取有界通配符泛型

Java 8 - Optional<CustomizedObject> 获取 CustomizedObject 中列表的第一个元素

objective-c - cocoa touch 。为什么 NSNumber 返回 intValue 和 floatValue 的差值?

ios - 发送带有查询字符串的阿拉伯语数据

objective-c - 制作图片跳转IOS

ios - TableViewController 中的 SearchBar