Я хотел бы создать 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?>!
из массива?
Вы уверены, что ваш код Swift 2 точно так же, как вы использовали. Небольшое различие приведет к большой разнице при работе с указателями. Повторно проверьте его, код падает на моей игровой площадке Xcode 7.3.1. – OOPer