加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SecItemCopyMatching的swift 2.0 keychain类型错误

发布时间:2020-12-14 05:45:33 所属栏目:百科 来源:网络整理
导读:我们使用以前版本的Swift获得了这段代码 var retrievedData: NSData? var extractedData: UnmanagedAnyObject? = nil let status = SecItemCopyMatching(keyChainQuery,extractedData) if (status == errSecSuccess) { if let validExtractedData = extracte
我们使用以前版本的Swift获得了这段代码
var retrievedData: NSData?
    var extractedData: Unmanaged<AnyObject>? = nil
    let status = SecItemCopyMatching(keyChainQuery,&extractedData)

    if (status == errSecSuccess) {
        if let validExtractedData = extractedData {
            let opaque = validExtractedData.toOpaque()
            retrievedData = Unmanaged<NSData>.fromOpaque(opaque).takeUnretainedValue()
        }
    }

但是现在这给了我们以下错误:

Cannot convert value of type ‘inout Unmanaged?’ (aka
‘inout Optional>’) to expected argument type
‘UnsafeMutablePointer’ (aka
‘UnsafeMutablePointer>’)

我对如何修复它有点迷茫.
我假设我必须分配一些内存,为它创建一个UnsafeMutablePointer,然后将其提供给SecItemCopyMatching?

我试过这个:

let sizeOfKey = 32
    var store = NSMutableData(capacity: sizeOfKey)!
    let status = SecItemCopyMatching(keyChainQuery,store.bytes)

但这给了我一个:

Cannot convert value of type ‘UnsafePointer’ (aka
‘UnsafePointer<()>’) to expected argument type
‘UnsafeMutablePointer’ (aka
‘UnsafeMutablePointer>’) error

有人有想法吗?

看来,我们不需要Unmanaged<>工作了.

尝试:

var retrievedData: NSData?
var extractedData: AnyObject?
let status = SecItemCopyMatching(keyChainQuery,&extractedData)

if (status == errSecSuccess) {
    retrievedData = extractedData as? NSData
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读