UnsafeMutablePointer <CFTypeRef> en Swift 3

Estoy intentando llamarSecItemCopyMatching en mi clase de utilidad de llavero para obtener datos del llavero, sin embargo, me encuentro con un problema al obtener elresult argumento,UnsafeMutablePointer<CFTypeRef?>.

La declaración original (en Swift 2, antes de migrar a Swift 3) era

// query is a dictionary of [String : AnyObject]

var result: Data?
let status = withUnsafeMutablePointer(to: &result) {
    SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
}

Pero en Swift 3, ahora debes llamar.withMemoryRebound para ver la memoria. Basándome en lo que Xcode te dice que hagas, probé esto

var result: Data?
let status = withUnsafeMutablePointer(to: &result){
    $0.withMemoryRebound(to: Data.self, capacity: 1){
        SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
    }
}

Sin embargo, al hacer esto, recibo un error

No se puede convertir el valor del tipo 'UnsafePointer<_>'al tipo de argumento esperado'UnsafeMutablePointer<CFTypeRef?>?'

Entonces, intenté usarCFTypeRef en lugar deData

var result: CFTypeRef?
let status = withUnsafeMutablePointer(to: &result){
    $0.withMemoryRebound(to: CFTypeRef.self, capacity: 1){
        SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
    }
}

SustituciónUnsafePointer($0) con simplemente$0 da como resultado el mismo mensaje de error.

¿Cómo puedo obtener unUnsafeMutablePointer<CFTypeRef?> para obtener datos del llavero?

Respuestas a la pregunta(2)

Su respuesta a la pregunta