我正在使用Swift开发一个简单的MacOS命令行应用程序。我创建了一个自定义的CoreImage过滤器,但在使用它时遇到了问题。代码可以成功编译,但运行时却出现以下错误:
*** 因未捕获的异常 'NSUnknownKeyException' 终止应用程序,原因: '[setValue:forUndefinedKey:]: 这个类不支持键值编码的key:inputImage.'
非常感谢任何解决这个问题的帮助。我已经在SO上搜索答案,但由于我的应用程序没有使用Storyboards或Outlets(它是纯命令行),所以很遗憾我无法自己解决。
我的程序在这一行中断:
filter.setValue(inputImage, forKey: kCIInputImageKey)
这是我正在使用的代码:
class CustomFilter:CIFilter {
var inputImage:CIImage?
let kernelString = CIKernel(string:
"kernel vec4 chromaKey( __sample s) { \n" +
" vec4 newPixel = s.rgba;" +
" newPixel[0] = 0.0;" +
" newPixel[2] = newPixel[2] / 2.0;" +
" return newPixel;\n" +
"}"
)
override var outputImage:CIImage! {
guard
let inputImage = inputImage
else {
return nil
}
let extent = inputImage.extent
let blur = kernelString?.apply(
withExtent: extent,
roiCallback: {
(index, rect) in
return rect
},
arguments: [inputImage])
return blur!.cropping(to: extent)
}
}
let filter = CustomFilter()
filter.setValue(inputImage, forKey: kCIInputImageKey) // it breaks here
guard
let result = filter.outputImage
else {
return nil
}
return result