Xcode 8 / Swift 3 - 类型“CGColorRenderingIntent”没有成员“RenderingIntentDefault”
Posted
技术标签:
【中文标题】Xcode 8 / Swift 3 - 类型“CGColorRenderingIntent”没有成员“RenderingIntentDefault”【英文标题】:Xcode 8 / Swift 3 - Type 'CGColorRenderingIntent' has no member 'RenderingIntentDefault' 【发布时间】:2016-06-19 20:55:29 【问题描述】:除了最后一行之外,我已经成功地将许多错误转换为 Swift 3。它适用于 Xcode 7,但不适用于 Xcode 8。
还值得注意的是,Xcode 7 有关于 CGColorRenderingIntent
的文档,但 Xcode 8 没有。
类型“CGColorRenderingIntent”没有成员“RenderingIntentDefault”
我正在使用的代码:
import CoreImage
// omitted code
public func imageFromPixels(pixels: ([Pixel], width: Int, height: Int)) -> CIImage
let bitsPerComponent = 8
let bitsPerPixel = 32
let rgbColorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.premultipliedLast.rawValue) // alpha is last
let providerRef = CGDataProvider(data: NSData(bytes: pixels.0, length: pixels.0.count * sizeof(Pixel)))
let image = CGImageCreate(pixels.1, pixels.2, bitsPerComponent, bitsPerPixel, pixels.1 * sizeof(Pixel), rgbColorSpace, bitmapInfo, providerRef!, nil, true, CGColorRenderingIntent.RenderingIntentDefault)
return CIImage(CGImage: image!)
苹果文档:
enum CGColorRenderingIntent : Int32
case RenderingIntentDefault
case RenderingIntentAbsoluteColorimetric
case RenderingIntentRelativeColorimetric
case RenderingIntentPerceptual
case RenderingIntentSaturation
更新代码:
let image = CGImage(width: pixels.1,
height: pixels.2,
bitsPerComponent: bitsPerComponent,
bitsPerPixel: bitsPerPixel,
bytesPerRow: pixels.1 * sizeof(Pixel),
space: rgbColorSpace,
bitmapInfo: bitmapInfo,
provider: providerRef!,
decode: nil,
shouldInterpolate: true,
intent: .defaultIntent)
return CGImage(CGImage: image!) // Incorrect argument label in call (have 'CGImage:', expected 'copy:')
【问题讨论】:
错字:return CIImage(cgImage: ...
with I
无论您查看什么文档都是旧文档。如果你在谷歌上搜索一个符号并找到以 developer.apple.com/library/ 开头的 URL,那么你就在发布 OS 和 Swift 2 的文档中。Swift 3 / Xcode 8 / associated OS beta docs for that枚举为here。
是的,那只是我返回的一种类型。主要问题是找到CGColorRenderingIntent
枚举的案例名称。我总是 cmd-click 任何我遇到的问题,但由于某种原因,我的 Xcode 8 只给我grey question marks
或no docs
消息。我很惊讶它甚至作为测试版发布,因为每次我更改某些内容时,错误更新需要 10 秒。我每 30 秒点击一次Build
,它似乎可以正确显示我的所有错误。每隔几秒钟,我的颜色编码也会消失。
您似乎正在使用 Swift Playground 教程进行光线跟踪。自发布以来,语法发生了很大变化。在这种情况下,您能否通过 github 将您完成的代码发送给我?
【参考方案1】:
⌘-单击符号CGColorRenderingIntent
,你会看到
public enum CGColorRenderingIntent : Int32 case defaultIntent case absoluteColorimetric case relativeColorimetric case perceptual case saturation
原来如此
let image = CGImage(width: pixels.1,
height: pixels.2,
bitsPerComponent: bitsPerComponent,
bitsPerPixel: bitsPerPixel,
bytesPerRow: pixels.1 * sizeof(Pixel),
space: rgbColorSpace,
bitmapInfo: bitmapInfo,
provider: providerRef!,
decode: nil,
shouldInterpolate: true,
intent: .defaultIntent)
return CIImage(cgImage: image!)
甚至CGImage
和CIImage
的初始值设定项都已更改。
【讨论】:
嗨。我刚刚更新了我的问题,说 common-click 在 Xcode 8 中对CGColorRenderingIntent
不起作用。至少对我来说它不起作用。我只是得到一个问号。 imgur.com/kjLECld。即使我在 CGImage 上遇到错误,就像你说的那样,自动完成只会给我 CGImage。我的 Xcode 有什么问题吗? Xcode 7 也是开放的。这会引起问题吗? Xcode 8 更新错误也很慢。大概 10 秒。
我更新了答案。实际上编译器应该给你建议做什么(它在我的机器上)。我不鼓励同时运行两个 Xcode 版本。
是的,我看到了,对不起。最后一个CIImage
抓住了我。谢谢。好的,现在零错误。唯一的问题是图像跟踪器不运行哈哈。哇。这是它应该看起来的样子。 i.imgur.com/vSulmar.png。但是 Xcode 8 只是空白。真的很遗憾,因为我想把它放在 ios 10 Playground 中。那好吧。感谢您的帮助。
顺便说一句,即使我在 CIImage 或 CGImage 上单击 cmd,我也没有得到任何 Xcode 版本 8.0 beta (8S128d) 到文档/父类的深层链接。什么会导致这种情况?我也应该使用 macOS 10.12 测试版吗?
搞定了。出于某种原因,Xcode 8 需要一分钟或重新启动才能显示错误更新。因此我不知道我有新的错误。在我重新启动 Xcode 8 之后,它才显示我必须修复的最后两个错误。 Image Tracer 终于开始工作了。以上是关于Xcode 8 / Swift 3 - 类型“CGColorRenderingIntent”没有成员“RenderingIntentDefault”的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 8.1 Swift 3 错误:无法将“String”类型的值转换为预期的参数类型“UnsafeMutableRawPointer”
UITextViewDelegate 方法在 Swift 3 和 Xcode 8.0 中给出“使用未声明的类型 URL”错误
Xcode 8 beta 6 AnyObject Swift 3 变化