We had this snippet of code with the previous version of 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()
}
}
However this now gives us the following error:
Cannot convert value of type 'inout Unmanaged?' (aka
'inout Optional>') to expected argument type
'UnsafeMutablePointer' (aka
'UnsafeMutablePointer>')
I'm a bit lost on how to fix it.
I presume I have to allocate some memory, make an UnsafeMutablePointer to it and then supply this to SecItemCopyMatching?
I tried this:
let sizeOfKey = 32
var store = NSMutableData(capacity: sizeOfKey)!
let status = SecItemCopyMatching(keyChainQuery, store.bytes)
But this gave me an:
Cannot convert value of type 'UnsafePointer' (aka
'UnsafePointer<()>') to expected argument type
'UnsafeMutablePointer' (aka
'UnsafeMutablePointer>') error
Anyone an idea?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…