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?