Como chamar SecItemCopyMatching no Xcode 7 beta 4?
Nas versões anteriores do Xcode 6 e 7 com Swift, essa sintaxe funcionaria:
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...
}
No entanto, a declaração SecItemCopyMatching foi alterada no Xcode 7 beta 4:
VELHO:func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<AnyObject?>) -> OSStatus
NOVO:func SecItemCopyMatching(_ query: CFDictionary!, _ result: UnsafeMutablePointer<Unmanaged<AnyObject>?>) -> OSStatus
... e agora o tipo secureItemValue não corresponde.
O mecanismo era confuso antes para extrair o resultado, e espero que seja mais fácil com a nova declaração, mas não sei como declarar o tipo correto para a variável secureItemValue e extrair o resultado.