UnsafeMutablePointer <CFTypeRef> no Swift 3

Estou tentando ligarSecItemCopyMatching na minha classe de utilitário de chaveiro para obter dados do chaveiro, mas estou com um problema ao obter oresult argumento,UnsafeMutablePointer<CFTypeRef?>.

A declaração original (no Swift 2, antes de migrar para o Swift 3) foi

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

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

Mas no Swift 3, você agora precisa ligar para.withMemoryRebound para visualizar a memória. Baseando-se no que o Xcode diz para você fazer, eu tentei isso

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

Ainda assim, recebo um erro

Não é possível converter o valor do tipo 'UnsafePointer<_>'ao tipo de argumento esperado'UnsafeMutablePointer<CFTypeRef?>?'

Então, eu tentei usarCFTypeRef ao invés deData

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

SubstituindoUnsafePointer($0) com simplesmente$0 resulta na mesma mensagem de erro.

Como posso obter umUnsafeMutablePointer<CFTypeRef?> para obter dados do chaveiro?

questionAnswers(2)

yourAnswerToTheQuestion