我想通过在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
答案 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)
个实例,则该应用很可能会崩溃。