2

配列から CFArray を作成したい

以前は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?>!2 番目のパラメータとして期待されています

私がそれをやろうとした1つの方法は次のとおりです:

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)
}

ただし、これは [0, 1, 2, 3] の代わりに [rawPointer の値、ガベージ、ガベージ、ガベージ] の要素を持つ CFArray を作成します。

UnsafeMutablePointer<UnsafeRawPointer?>!このパラメーターを配列から作成するにはどうすればよいですか?

4

1 に答える 1