Xcode Can';无法在Swift中创建NSBitmapImageRep

Xcode Can';无法在Swift中创建NSBitmapImageRep,xcode,macos,swift,nsbitmapimagerep,Xcode,Macos,Swift,Nsbitmapimagerep,我有一个用xcode 6.1创建的OSXcode项目 我想用它来训练斯威夫特一点 在我的一个视图中,我尝试创建NSBitMapImageRep,如下所示: class BitmapView : NSView { var image: NSBitmapImageRep! override func awakeFromNib() { var blub = NSBitmapImageRep(bitmapDataPlanes: nil, pixelsWide: Int(self

我有一个用xcode 6.1创建的OSXcode项目 我想用它来训练斯威夫特一点

在我的一个视图中,我尝试创建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

错误实际上是相当描述性的-您向初始值设定项提供了一组不一致的值。具体而言,
samplesperpoixel
值1不能支持RGB颜色空间,您可以在
colorSpaceName
中指定:

samplesperpoixel
:数据组件或每个像素的采样数。此值包括颜色组件和覆盖组件(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)!

虽然你的答案是正确的,但我不认为这个错误很具有描述性。。。详细的错误描述了“在展开可选值时意外地发现了nil”,这使得错误似乎完全在其他地方。。。主要是在位图数据平面中……您正在对一个失败的初始值设定项(
init?
)执行强制展开(
)。在这种情况下,这实际上是一个非常常见的错误。