5

SecItemCopyMatchingキーチェーンからデータを取得するためにキーチェーン ユーティリティ クラスを呼び出そうとしていますが、result引数の取得で問題が発生していますUnsafeMutablePointer<CFTypeRef?>

元のステートメント (Swift 2 で、Swift 3 に移行する前) は

// query is a dictionary of [String : AnyObject]

var result: Data?
let status = withUnsafeMutablePointer(to: &result) {
    SecItemCopyMatching(query as CFDictionary, UnsafeMutablePointer($0))
}

.withMemoryReboundしかし Swift 3 では、メモリを表示するために呼び出す必要があります。Xcodeがあなたにやるように言ったことに基づいて、私はこれを試しました

var result: Data?
let status = withUnsafeMutablePointer(to: &result){
    $0.withMemoryRebound(to: Data.self, capacity: 1){
        SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
    }
}

それでもこれを行うと、エラーが発生します

UnsafePointer<_>タイプ ' ' の値を予期される引数タイプ ' ' にUnsafeMutablePointer<CFTypeRef?>?変換できません

だから、CFTypeRef代わりに使ってみたData

var result: CFTypeRef?
let status = withUnsafeMutablePointer(to: &result){
    $0.withMemoryRebound(to: CFTypeRef.self, capacity: 1){
        SecItemCopyMatching(query as CFDictionary, UnsafePointer($0))
    }
}

に置き換えるUnsafePointer($0)だけ$0で、同じエラー メッセージが表示されます。

UnsafeMutablePointer<CFTypeRef?>キーチェーンからデータを取得するにはどうすればよいですか?

4

2 に答える 2