2016-06-19 5 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!) 
} 

компании Apple документации:

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 и находите свой путь к URL-адресу, который начинается с developer.apple .com/library /, вы находитесь в документах для доставки ОС и Swift 2. Для этого перечисления доступны бета-документы Swift 3/Xcode 8/related OS для этого перечисления (https://developer.apple.com/reference/ core4). – rickster

+0

Да, это был только тот тип, который у меня был для возвращения. Основная проблема заключалась в поиске имени case для перечисления 'CGColorRenderingIntent'. Я всегда smd-click, что бы я ни испытывал, но по какой-то причине мой Xcode 8 только дает мне сообщение «серые вопросительные знаки» или «no docs». ​​Я удивлен, что это было выпущено даже как бета-версия, потому что каждый раз, когда я что-то меняю, требуется 10 секунд для обновления. Кажется, каждые 30 секунд «Сборка» получается правильное отображение всех моих ошибок. Каждые несколько секунд мое цветовое кодирование также исчезает. – tymac

ответ

4

⌘ щелкните на символе 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 были изменены.

+0

Привет. Я просто обновил свой вопрос, чтобы сказать, что обычный клик не работает на 'CGColorRenderingIntent' в Xcode 8. По крайней мере для меня это не так. Я просто получаю вопросительный знак. 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. Ну что ж. Спасибо за вашу помощь. – tymac

Смежные вопросы