今天在做Core Image 的时候,在一个函数内使用 guard let 突然发现报了Initializer for conditional binding must have Optional type 这个错误
先看错误代码:
/*颜色生成滤镜*/
func colorGenerator(color: UIColor) -> Filter {
return { _ in
guard let c = CIColor(color: color) else { fatalError() }
let parameters = [kCIInputColorKey : c]
guard let filter = CIFilter(name: "CIConstantColorGenerator", withInputParameters: parameters) else { fatalError() }
guard let outputImage = filter.outputImage else { fatalError() }
return outputImage
}
}
查了下资料,发现是guard let And if 里面的判断类型必须是Optional类型。
解决方案
/*颜色生成滤镜*/
func colorGenerator(color: UIColor) -> Filter {
return { _ in
let c : CIColor? = CIColor(color: color)
guard c != nil else { fatalError() }
let parameters = [kCIInputColorKey : c!]
guard let filter = CIFilter(name: "CIConstantColorGenerator", withInputParameters: parameters) else { fatalError() }
guard let outputImage = filter.outputImage else { fatalError() }
return outputImage
}
}