【发布时间】:2015-10-11 11:56:49
【问题描述】:
在带有 Swift 的 Xcode 6 和 7 的早期版本中,这种语法可以工作:
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 中发生了变化:
旧:func SecItemCopyMatching(_ query: CFDictionary, _ result: UnsafeMutablePointer<AnyObject?>) -> OSStatus
新:func SecItemCopyMatching(_ query: CFDictionary!, _ result: UnsafeMutablePointer<Unmanaged<AnyObject>?>) -> OSStatus
...现在secureItemValue 类型不匹配了。
之前提取结果的机制令人困惑,我希望新声明更容易,但我不知道如何为secureItemValue变量声明正确的类型并提取结果。
【问题讨论】:
标签: ios swift xcode7 xcode7-beta4