可选类型“UIImage?”的值未打开
Posted
技术标签:
【中文标题】可选类型“UIImage?”的值未打开【英文标题】:Value of optional type 'UIImage?' not unwrapped 【发布时间】:2016-05-19 14:17:17 【问题描述】:我正在尝试创建一个简单的过滤器应用程序,在按下按钮时过滤显示的图像。
@IBAction func applyFilter(sender: AnyObject)
// Create an image to filter
let inputImage = CIImage(image: photoImageView.image)
// Create a random color to pass to a filter
let randomColor = [kCIInputAngleKey: (Double(arc4random_uniform(314)) / 100)]
// Apply a filter to the image
let filteredImage = inputImage.imageByApplyingFilter("CIHueAdjust", withInputParameters: randomColor)
// Render the filtered image
let renderedImage = context.createCGImage(filteredImage, fromRect: filteredImage.extent())
// Reflect the change back in the interface
photoImageView.image = UIImage(CGImage: renderedImage)
我不断收到错误:
可选类型“UIImage?”的值没有拆开。
我在这里做错了什么?我是 Swift 初学者。
【问题讨论】:
你必须了解 Optionals,这是 Swift 中的一个关键概念:developer.apple.com/library/ios/documentation/Swift/Conceptual/… 【参考方案1】:UIImageView 的图像属性中并不总是有 UIImage。
你应该在之前检查:
guard let img = photoImageView.image else return
let inputImage = CIImage(image: img)
【讨论】:
【参考方案2】:正如 Eric 所说,您应该了解可选项。在这种情况下,如果我们查看UIImage init,我们会看到如果方法失败,它可以返回 nil。因此,您必须先确保 UIImage 已成功创建
if let myImage = UIImage(CGImage: renderedImage)
photoImageView.image = myImage
【讨论】:
以上是关于可选类型“UIImage?”的值未打开的主要内容,如果未能解决你的问题,请参考以下文章
可选类型 'NSURL?' 的值未拆封;你的意思是用'!'或者 '?'?
FBSDKGraphRequest:结果 - 可选类型“任何?”的值未拆封;你的意思是用'!'或者 '?'?