Wir sind mit der vorherige Version von Swift diese Code-Snippet hattenswift 2.0 keychain Art Fehler für SecItemCopyMatching
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()
}
}
jedoch jetzt das gibt uns die folgende Fehlermeldung:
Cannot convert value of type 'inout Unmanaged?' (aka 'inout Optional>') to expected argument type 'UnsafeMutablePointer' (aka 'UnsafeMutablePointer>')
Ich bin ein bisschen verloren auf, wie man es repariert. Ich nehme an, dass ich etwas Speicher reservieren muss, machen Sie einen UnsafeMutablePointer dazu und liefern Sie es dann an SecItemCopyMatching?
habe ich versucht, dies:
let sizeOfKey = 32
var store = NSMutableData(capacity: sizeOfKey)!
let status = SecItemCopyMatching(keyChainQuery, store.bytes)
Aber das gab mir ein:
Cannot convert value of type 'UnsafePointer' (aka 'UnsafePointer<()>') to expected argument type 'UnsafeMutablePointer' (aka 'UnsafeMutablePointer>') error
jemand eine Idee?
scheint gut zu kompilieren! Kannst du erklären, wie du zu dieser Lösung gekommen bist? Der Compiler will a: UnsafeMutablePointer> noch scheinbar AnyObject? ist auch gut? –
Toad
siehe [dieses Dokument] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_16). Wir können einen In-Out-Ausdruck ('&') an den Parameter 'UnsafeMutablePointer 'übergeben. Wenn 'UnsafeMutablePointer >' akzeptiert wird, können wir '& result' übergeben, wenn' result' eine 'Optional ' a.k.a. 'AnyObject?' Variable ist. –
rintaro