NSDictionary呼叫中的额外参数“forKey”

时间:2015-03-30 05:48:34

标签: ios swift nsdictionary

正如我的问题所述,我不断收到错误"额外的争论' forKey'在电话"在尝试编写这段代码时。有人可以解释一下原因吗?

var rgbOutputSettings:NSDictionary = NSDictionary(object: NSNumber(int: kCMPixelFormat_32BGRA), forKey: kCVPixelBufferPixelFormatTypeKey)

3 个答案:

答案 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)

kCVPixelBufferPixelFormatTypeKeyCFStringRef而不是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