我有一个使用 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
我猜这是由于位图数据平面为零。但它是一个可选值,根据文档允许为 NULL。传递NSNull()并不能编译。
谁能告诉我我必须通过什么?o_O
该错误实际上是相当描述性的 - 您向初始值设定项提供了一组不一致的值。具体而言,samplesPerPixel
值 1 不能支持 RGB 色彩空间,您在 colorSpaceName
中指定了该空间。从这里:
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)!