ios - 无法转换AnyObject的表达式类型?输入 '$T3'

标签 ios swift uiimageview ios8

我试图通过在 Swift 中传递图像来获取 ImageView 。但是我得到了一个错误。

func setImageViewForImage(image:UIImage) -> UIImageView?{
        var image_pmc:UIImage = image
        var imageView_pmc:UIImageView = UIImageView(image: image_pmc)
        imageView_pmc.frame = CGRectMake(self.frame.size.width/2 - image_pmc.size.width/2, 10, image_pmc.size.width, image_pmc.size.height)
        return imageView_pmc
    }

函数调用:

var imgView = setImageViewForImage(response)//错误

//响应是UIImage

最佳答案

错误是因为您的response 变量是AnyObject? 类型,不能隐式转换为UIImage,但是,作为一个可选,在传递给 setImageViewForImage 之前必须将其展开(需要非可选)。

您应该将可选绑定(bind)与可选向下转换结合使用,如下所示:

if let response = response as? UIImage {
    myClass.setImageViewForImage(response)
}

其中 myClass 是包含 setImageViewForImage 方法的类的实例 - 大概是 UIView(的子类)的实例。

请注意,我假设 response 实际上包含一个 UIImage - 它的名字让我觉得它是您从 REST API 调用或类似调用中收到的东西。

请注意,避免可选绑定(bind)并使用显式强制转换:

myClass.setImageViewForImage(response as UIImage)

不安全,因为如果响应为零或不包含 UIImage 实例,应用程序很可能会崩溃。

关于ios - 无法转换AnyObject的表达式类型?输入 '$T3',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571427/

相关文章:

ios - 虚线边框 UIImageView swift

ios - View 负载上的更改约束常量没有影响

iOS - 导航栏背景和 UIView 背景之间的颜色差异

swift - 枚举在自定义初始值设定项中不起作用

iphone - 重复符号_OBJC_METACLASS_$_SBJsonParser

ios - Github API 回调地址

swift - 快速,删除 SKScene 后如何使内存恢复正常?

objective-c - 尝试将 UIImageView 设置为背景 - 布局菜单项在哪里

ios - ALAssets库错误 - "Too many contexts. No space in contextList."

ios - 获取 UICollectionView 部分的框架