¿Cómo llamar a SecItemCopyMatching en Xcode 7 beta 4?
En versiones anteriores de Xcode 6 y 7 con Swift, esta sintaxis funcionaría:
var secureItemValue: Unmanaged<AnyObject>?
let statusCode: OSStatus = SecItemCopyMatching(keychainItemQuery, &secureItemValue)
if statusCode == errSecSuccess
{
let opaquePointer = secureItemValue?.toOpaque()
let secureItemValueData = Unmanaged<NSData>.fromOpaque(opaquePointer!).takeUnretainedValue()
// Use secureItemValueData...
}
Sin embargo, la declaración SecItemCopyMatching ha cambiado en Xcode 7 beta 4:
ANTIGUO:func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<AnyObject?>) -> OSStatus
NUEVO:func SecItemCopyMatching(_ query: CFDictionary!, _ result: UnsafeMutablePointer<Unmanaged<AnyObject>?>) -> OSStatus
... y ahora el tipo secureItemValue no coincide.
El mecanismo era confuso antes de extraer el resultado, y espero que sea de alguna manera más fácil con la nueva declaración, pero no sé cómo declarar el tipo correcto para la variable secureItemValue y extraer el resultado.