2016-09-26 7 views
2

Я хотел бы создать CFArray из массиваскор 3, как использовать CFArrayCreate

ранее в Swift 2, я могу это сделать:

let array = [0, 1, 2, 3] 
let arrayPointer = UnsafeMutablePointer<UnsafePointer<Void>>(array) 
let cfArray = CFArrayCreate(kCFAllocatorDefault, arrayPointer, array.count, nil) 

теперь Swift 3 CFArrayCreate является ожидая UnsafeMutablePointer<UnsafeRawPointer?>! в качестве второго параметра

один способ, которым я пытался сделать это как таковой:

let array: [Int] = [0, 1, 2, 3] 
var rawPointer: UnsafeRawPointer? = UnsafeRawPointer(array) 
let cfArray = withUnsafeMutablePointer(to: &rawPointer) { ppArray in 
    CFArrayCreate(kCFAllocatorDefault, ppArray, array.count, nil) 
} 

однако это создаст CFArray с элементом [значение rawPointer, мусора, мусора, мусора] вместо [0, 1, 2, 3]

Как я могу сделать этот параметр UnsafeMutablePointer<UnsafeRawPointer?>! из массива?

+0

Вы уверены, что ваш код Swift 2 точно так же, как вы использовали. Небольшое различие приведет к большой разнице при работе с указателями. Повторно проверьте его, код падает на моей игровой площадке Xcode 7.3.1. – OOPer

ответ