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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage