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 marksno 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!)

甚至CGImageCIImage 的初始值设定项都已更改。

【讨论】:

嗨。我刚刚更新了我的问题,说 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 变化

如何使用 Alamofire 在 Xcode 8 Swift 3.0 中获取特定的 JSON?

XCode 3.2.6 无法识别 Cg 框架

xcode 8.3.3 是不是运行 swift 3.2