Преобразование массива Swift в CFArray в Xcode 8 (Swift 3)

Это больше не работает в Xcode 8 beta 6:

let colors:CFArray = [fromColor.cgColor, toColor.cgColor]

или

let gradient:CGGradient = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors:[fromColor.cgColor, toColor.cgColor], locations:[0.0, 1.0])!

Ошибка: Контекстный тип "CFArray" не может использоваться с литералом массива

Какой последний способ преобразования из массива в CFArray?

Ответ 1

Он работает, если вы добавите листинг as CFArray:

let colors = [fromColor.cgColor, toColor.cgColor] as CFArray

или вы можете добавить приведение в вызов:

let gradient = CGGradient(colorsSpace: CGColorSpaceCreateDeviceRGB(), colors:[fromColor.cgColor, toColor.cgColor] as CFArray, locations:[0.0, 1.0])!

В Swift 3 (Xcode 8 beta 6) неявное литье в мостовые типы было удалено. В некоторых случаях, например, этот необходимо будет добавить явное литье, чтобы заставить его работать.