我已经使用xcode 6.1创建了一个osx xcode项目 我想用它来训练使用SWIFT一点点。
在我的一个视图中,我尝试创建一个NSBitMapImageRep,如下所示:
class BitmapView : NSView {
var image: NSBitmapImageRep!
override func awakeFromNib() {
var blub = NSBitmapImageRep(bitmapDataPlanes: nil,
pixelsWide: Int(self.frame.size.width),
pixelsHigh: Int(self.frame.size.height),
bitsPerSample: 8,
samplesPerPixel: 1,
hasAlpha: false,
isPlanar: false,
colorSpaceName: NSCalibratedRGBColorSpace,
bytesPerRow: 0, bitsPerPixel: 0)!
//test()
}}
但每次我尝试运行它时,都会收到以下错误:
Inconsistent set of values to create NSBitmapImageRep fatal error: unexpectedly found nil while unwrapping an Optional value
我猜是因为bitmapDataPlanes是nil。但它是一个可选值,根据文档允许为NULL。传递NSNull()而不是编译。
有人可以告诉我我要通过什么吗? O_O
答案 0 :(得分:6)
错误实际上是相当描述性的 - 您为初始化程序提供了一组不一致的值。具体来说,samplesPerPixel
值为1不能支持您在colorSpaceName
中指定的RGB颜色空间。 From here:
samplesPerPixel
:数据组件的数量或每像素的样本数。该值包括颜色分量和覆盖分量(alpha)(如果存在)。有意义的值范围从1到5.具有青色,品红色,黄色和黑色(CMYK)颜色分量加上覆盖分量的图像的spp为5;缺少覆盖组件的灰度图像的spp为1.
所以你只需要将每个像素的样本更改为3:
var blub = NSBitmapImageRep(bitmapDataPlanes: nil,
pixelsWide: Int(100),
pixelsHigh: Int(100),
bitsPerSample: 8,
samplesPerPixel: 3,
hasAlpha: false,
isPlanar: false,
colorSpaceName: NSCalibratedRGBColorSpace,
bytesPerRow: 0, bitsPerPixel: 0)!