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?>
キーチェーンからデータを取得するにはどうすればよいですか?