2016-06-19 36 views
0

我已經成功地將許多錯誤轉換爲Swift 3,除了最後一行。它適用於Xcode 7,但不適用於Xcode 8.Xcode 8/Swift 3 - 類型'CGColorRenderingIntent'沒有成員'RenderingIntentDefault'

值得一提的是,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:') 
+0

Typo:'return CIImage(cgImage:...'with ** I ** – vadian

+0

無論你在看什麼樣的文檔都是舊的,如果你google了一個符號並找到你的方式去找一個以developer.apple開頭的URL .com/library /,你在運行操作系統和Swift 2的文檔。該枚舉的Swift 3/Xcode 8 /相關OS測試文檔是[here](https://developer.apple.com/reference/) coregraphics/cgcolorrenderingintent) – rickster

+0

是的,這只是我返回的類型,主要的問題是找到'CGColorRenderingIntent'枚舉的案例名稱,我總是通過cmd單擊我遇到的任何問題,但由於某種原因,我的Xcode 8只給了我'灰色問號'或者'沒有文檔'的信息,我很驚訝這個版本甚至作爲一個測試版發佈,因爲每次我改變了一些東西,需要10秒鐘才能更新錯誤。它似乎每隔30秒建立一次正確顯示我所有的錯誤。每隔幾秒鐘,我的顏色編碼也會消失。 – tymac

回答

4

⌘單擊,你會看到

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連初始化已更改。

+0

嗨。我只是更新了我的問題,說在Xcode 8中,common-click不起作用於'CGColorRenderingIntent'。至少對我來說不是。我只是得到一個問號。 http://imgur.com/kjLECld。即使我發現CGImage出現錯誤,就像你說的自動完成只給了我CGImage一樣。是我的Xcode搞砸了嗎? Xcode 7也是開放的。這是造成問題嗎?另外Xcode 8非常慢是更新錯誤。像10秒。 – tymac

+0

我更新了答案。實際上編譯器應該給你建議做什麼(它在我的機器上)。我不希望同時運行兩個Xcode版本。 – vadian

+0

是的,我看到了,對不起。最後一個'CIImage'給了我。謝謝。好吧,現在是零錯誤。唯一的問題是圖像跟蹤器不運行哈哈。哇。這是它應該看起來像什麼。 http://i.imgur.com/vSulmar.png。但Xcode 8只是空白。這真是一個恥辱,因爲我想把它放在iOS 10 Playground中。好吧。謝謝你的幫助。 – tymac

相關問題