Xcode CI内部错误,内核参数1和参数之间的类型不匹配

Xcode CI内部错误,内核参数1和参数之间的类型不匹配,xcode,uiimage,core-graphics,core-image,cifilter,Xcode,Uiimage,Core Graphics,Core Image,Cifilter,我正在尝试创建CicolorCampFilter 它说我可以将“inputMinComponents”的键设置为[0,0,0,0]或任何我想要的RGB值 但是这个代码: filter = CIFilter(name:"CIColorClamp") filter.setValue(ciImage, forKey: kCIInputImageKey) filter.setValue([0,0,0,0], forKey: "inputMinComponents") 导致此错误的原因: CI int

我正在尝试创建CicolorCampFilter

它说我可以将“inputMinComponents”的键设置为[0,0,0,0]或任何我想要的RGB值

但是这个代码:

filter = CIFilter(name:"CIColorClamp")
filter.setValue(ciImage, forKey: kCIInputImageKey)
filter.setValue([0,0,0,0], forKey: "inputMinComponents")
导致此错误的原因:

CI internal error, type mismatch between kernel parameter 1 and argument
我四处寻找了其他CicolorCamp示例,但什么也没找到


你知道我试图传递给“inputMinComponents”键的值有什么问题吗?

显然swift的智能转换不起作用,你必须明确地创建一个CIVector

filter = CIFilter(name:"CIColorClamp")
filter.setValue(ciImage, forKey: kCIInputImageKey)
var lowerLevel = CIVector(x: 0.1, y: 0.1, z: 0.3, w: 0)
filter.setValue(lowerLevel, forKey: "inputMinComponents")
var upperLevel = CIVector(x: 0.5, y: 0.7, z: 0.9, w: 1)
filter.setValue(upperLevel, forKey: "inputMaxComponents")

斯威夫特不会自动施展所有技能。事实上,它需要在比C更多的地方进行显式强制转换和转换。但是,如果使用适当的
ArrayTerralConvertible
实现扩展
CIVector
,则可以使问题中的代码自动转换。感谢您的提示XD