UnsafeMutablePointer <CFTypeRef> in Swift 3
Ich versuche, @ anzurufSecItemCopyMatching
in meiner Schlüsselbund-Dienstprogrammklasse, um Daten aus dem Schlüsselbund abzurufen, aber ich habe ein Problem mit dem Abrufen desresult
Streit,UnsafeMutablePointer<CFTypeRef?>
.
Die ursprüngliche Anweisung (in Swift 2 vor der Migration zu Swift 3) lautete
// query is a dictionary of [String : AnyObject]
var result: Data?
let status = withUnsafeMutablePointer(to: &result) {
SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
}
Aber in Swift 3 müssen Sie jetzt @ anruf.withMemoryRebound
, um den Speicher anzuzeigen. Basiert auf den Anweisungen von Xcode. Ich habe Folgendes ausprobier
var result: Data?
let status = withUnsafeMutablePointer(to: &result){
$0.withMemoryRebound(to: Data.self, capacity: 1){
SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
}
}
Wenn ich das tue, erhalte ich eine Fehlermeldung
Kann Wert vom Typ '@ nicht konvertierUnsafePointer<_>
'zum erwarteten Argumenttyp'UnsafeMutablePointer<CFTypeRef?>?
'
Also, ich habe versucht mitCFTypeRef
Anstatt vonData
var result: CFTypeRef?
let status = withUnsafeMutablePointer(to: &result){
$0.withMemoryRebound(to: CFTypeRef.self, capacity: 1){
SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
}
}
ReplacingUnsafePointer($0)
mit einfach$0
führt zu derselben Fehlermeldung.
ie bekomme ich einUnsafeMutablePointer<CFTypeRef?>
um Daten vom Schlüsselbund zu erhalten?