我正在尝试将NSColor的实例保存到这样的文件中:
writeF(node.lineColour.hueComponent)
writeF(node.lineColour.saturationComponent)
writeF(node.lineColour.brightnessComponent)
writeF(node.lineColour.alphaComponent)
写功能在哪里:
func writeF(var val: CGFloat) -> Bool {
let nsd = NSData(bytes: &val, length: sizeof(CGFloat))
let rv = oStream!.write(UnsafePointer(nsd.bytes), maxLength: sizeof(CGFloat))
return rv > 0
}
而且“ node.lineColour”只是NSColor.blueColor()。一切都可以编译,但是在第一行“ writeF”行给出了运行时消息:
2015-10-01 07:57:43.871 canl [77917:8371660]引发了未捕获的异常
2015-10-01 07:57:43.871 canl [77917:8371660] *** -hueComponent对NSColor NSCalibratedWhiteColorSpace 0 1无效;需要先转换色彩空间。
Apple关于色彩空间的文档非常深奥(如果您已经了解它,那将是一个很好的参考,但是如果不是,那么……祝您好运)。上面的代码为什么错误?应该至少能够检索颜色分量(CGFloat)。
最佳答案
浏览了可用的文档并尝试了不同的方法后,我发现此方法有效:
let aColor = node.lineColor.colorUsingColorSpaceName(NSCalibratedRGBColorSpace)
if let culoare = aColor {
writeF(culoare.redComponent)
writeF(culoare.greenComponent)
writeF(culoare.blueComponent)
writeF(culoare.alphaComponent)
}
它还可以用于获取色相,饱和度和亮度分量,但是我想我会使用RGB。
关于cocoa - 将NSColor组件保存到文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32889659/