xcode – Swift:获取有关函数参数类型错误的更多详细信息

我正在使用
Xcode 6.3.1和
Swift.

当具有多个参数的函数在参数类型上出现一些错误时,很难知道哪个参数是错误的.

例如,CGBitmapContextCreate(),这段代码:

let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(CGImageAlphaInfo.PremultipliedLast.rawValue)
let context = CGBitmapContextCreate(nil, UInt(size.width), UInt(size.height), 8, 0, colorSpace, bitmapInfo)

会产生这样的错误:

MyFile.swift:23:19: Cannot invoke 'CGBitmapContextCreate' with an argument list of type '(nil, UInt, UInt, Int, Int, CGColorSpace, CGBitmapInfo)'

通过仔细比较文档和我的参数列表,我发现它是第二个和第三个参数,应该是Int.

有没有办法让编译器更加智能化?

最佳答案 根据您在编译时实际访问的定义,问题可能是您正在查看的CGBitmapContextCreate的联机文档是错误的.

最后一个参数必须是UInt32类型,而CGBitmapInfo返回一个CGBitmapInfo对象.这就是编译器错误的原因.您传递的参数类型错误.您甚至可以右键单击该功能并单击“查看定义”,这将验证我在说什么.

请尝试直接传递CGImageAlphaInfo.PremultipliedLast.rawValue,因为它是正在查找的UInt32.

示例解决方案

let colorSpace:CGColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGImageAlphaInfo.PremultipliedLast.rawValue
let context = CGBitmapContextCreate(nil, UInt(size.width), UInt(size.height), 8, 0, colorSpace, bitmapInfo)

你会发现你将能够编译源代码并获得预期的结果.请注意,您仍然可以对此值应用任何按位操作.

PS:我遇到了同样的问题,当我找不到解决方案时,我感到非常沮丧.

点赞