Как использовать UnsafeMutablePointer в Swift 3?
У меня есть следующий код, написанный в Swift 2.2:
let keyData = NSMutableData(length: 64)!
SecRandomCopyBytes(kSecRandomDefault, 64, UnsafeMutablePointer<UInt8>(keyData.mutableBytes))
XCode 8 выделяет эту вторую строку и утверждает, что
Невозможно вызвать инициализатор для типа 'UnsafeMutablePointer < _ > ' с помощью список аргументов типа '(UnsafeMutableRawPointer)'
Хотя я ценю, что XCode говорит мне об этом, я не совсем понимаю, как изменить UnsafeMutableRawPointer на приемлемость.
Кто-нибудь знает, как преобразовать этот код в Swift 3?
Ответы
Ответ 1
Я рекомендую вам работать с Data
, а не NSData
в Swift 3.
var keyData = Data(count: 64)
let result = keyData.withUnsafeMutableBytes {mutableBytes in
SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes)
}
withUnsafeMutableBytes(_:)
объявляется как общий метод, поэтому в простых случаях, таких как это, вы можете использовать его без указания типа элемента.