Как вызвать SecItemCopyMatching в Xcode 7 beta 4?
В предыдущих версиях Xcode 6 и 7 с Swift этот синтаксис работал бы:
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...
}
Однако объявление SecItemCopyMatching изменилось в Xcode 7 beta 4:
OLD:func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<AnyObject?>) -> OSStatus
NEW:func SecItemCopyMatching(_ query: CFDictionary!, _ result: UnsafeMutablePointer<Unmanaged<AnyObject>?>) -> OSStatus
... и теперь тип secureItemValue не совпадает.
Механизм сбивал с толку, прежде чем извлечь результат, и я надеюсь, что с новым объявлением это будет как-то проще, но я не знаю, как объявить правильный тип для переменной secureItemValue и извлечь результат.