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

时间:2014-10-26 09:08:03

标签: 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

1 个答案:

答案 0 :(得分:1)

错误是因为您的response变量属于AnyObject?类型,不能隐式强制转换为UIImage,但是,作为可选项,必须在传递给{之前将其解包{1}}(期望非可选)。

您应该使用可选绑定和可选的向下转换,如下所示:

setImageViewForImage

其中if let response = response as? UIImage { myClass.setImageViewForImage(response) } 是包含myClass方法的类的实例 - 可能是setImageViewForImage的(子类)的实例。

请注意,我假设UIView实际上包含response - 它的名称让我认为它是从REST API调用或类似内容中获得的。

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

UIImage

不安全,因为如果响应为nil或者它不包含myClass.setImageViewForImage(response as UIImage) 个实例,则该应用很可能会崩溃。