Je travaille sur une simple application de ligne de commande MacOS dans Swift. J'ai créé un filtre CoreImage personnalisé et j'ai des problèmes pour l'utiliser. Le code compile très bien mais quand il exécute sa sortie avec l'erreur suivante:"Cette classe n'est pas compatible avec le codage de valeur de clé" using CoreImage
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputImage.'
Toute aide à ce problème serait grandement apprécié. Je ai essayé de chercher une réponse sur SO, mais comme mon application n'utilise pas Storyboards ou Outlets (c'est pure ligne de commande), malheureusement, je ne pouvais pas m'en empêcher.
Mes pauses programme sur cette ligne:
filter.setValue(inputImage, forKey: kCIInputImageKey)
Voici le code que je utilise:
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
Vous forcez la sortie d'un objet CIImage avec CIImage! mais en retournant un possible nul, ce qui ne semble pas correct. –