swift – 使用CoreImage“这个类不符合键值编码”

我正在使用 Swift中的一个简单的MacOS命令行应用程序.我创建了一个自定义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
符合键值编码的属性必须标记为动态
dynamic var inputImage : CIImage?

在Swift 4中甚至是@objc

@objc dynamic var inputImage : CIImage?

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...