UnsafeMutablePointer <CFTypeRef> в Swift 3
Я пытаюсь позвонить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))
}
Но в Swift 3 вам теперь необходимо позвонить.withMemoryRebound
для того, чтобы просмотреть память. Основы того, что 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?>
для получения данных из цепочки для ключей?