Xcode Can';无法在Swift中创建NSBitmapImageRep
我有一个用xcode 6.1创建的OSXcode项目 我想用它来训练斯威夫特一点 在我的一个视图中,我尝试创建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
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?
)执行强制展开(!
)。在这种情况下,这实际上是一个非常常见的错误。