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?