3

xcode 6.1 で作成された osx xcode プロジェクトがあります。これを使用して、SWIFT を少し使用してトレーニングしたかったのです。

私のビューの 1 つで、次のように 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

4

1 に答える 1

7

エラーは実際にはかなり説明的です-一貫性のない値のセットを初期化子に提供しています。具体的には、samplesPerPixel値 1 は、で指定する RGB 色空間をサポートできませんcolorSpaceNameここから

samplesPerPixel: データ コンポーネントの数、またはピクセルあたりのサンプル数。この値には、カラー コンポーネントとカバレッジ コンポーネント (アルファ) (存在する場合) の両方が含まれます。有効な値の範囲は 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)!
于 2014-11-17T19:32:02.877 に答える