我工作在斯威夫特一个简单的MacOS 命令行应用。我创建了一个定制的CoreImage过滤器,并且遇到了麻烦。该代码编译得很好,但运行时它退出,出现以下错误:“该类不是键值编码兼容的”使用CoreImage
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputImage.'
任何有关这个问题的帮助将不胜感激。试图在SO上搜索答案,但由于我的应用程序没有使用Storyboard或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
您是力输出与CIImage一个CIImage对象!但返回可能的零,这看起来不正确。 –