正如我的问题所述,我不断收到错误"额外的争论' forKey'在电话"在尝试编写这段代码时。有人可以解释一下原因吗?
var rgbOutputSettings:NSDictionary = NSDictionary(object: NSNumber(int: kCMPixelFormat_32BGRA), forKey: kCVPixelBufferPixelFormatTypeKey)
答案 0 :(得分:2)
打破你的陈述我们得到:
let obj = NSNumber(integer: kCMPixelFormat_32BGRA)
let key = kCVPixelBufferPixelFormatTypeKey
var rgbOutputSettings : NSDictionary = NSDictionary(object: obj, forKey: key)
问题是kCVPixelBufferPixelFormatTypeKey
可能只是一种类型。引用文档(强调我的):
kCVPixelBufferPixelFormatTypeKey:
此缓冲区的像素格式(类型CFNumber,或类型CFArray 包含CFNumber类型数组(实际上是类型OSType))。
我已经转换为String以使其编译:
let key: String = kCVPixelBufferPixelFormatTypeKey as String
如果您需要实现类似this
之类的内容,也许您不需要答案 1 :(得分:2)
kCVPixelBufferPixelFormatTypeKey
是CFStringRef
而不是NSString
。您需要将其转换为NSString
,如下所示:
var formatKey = kCVPixelBufferPixelFormatTypeKey as NSString
var rgbOutputSettings:NSDictionary = NSDictionary(object: NSNumber(int: kCMPixelFormat_32BGRA), forKey: formatKey)
答案 2 :(得分:0)
在某些情况下,即使调用看起来正确,如果参数的类型与函数声明的类型不匹配,也会给出“调用中的额外参数”。
请参阅SO {/ p>上的question
所以你可以用它作为
var key = kCVPixelBufferPixelFormatTypeKey as NSString