我试图通过在 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/