Подтвердить что ты не робот

Как использовать 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?

4b9b3361

Ответ 1

Я рекомендую вам работать с Data, а не NSData в Swift 3.

var keyData = Data(count: 64)
let result = keyData.withUnsafeMutableBytes {mutableBytes in
    SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes)
}

withUnsafeMutableBytes(_:) объявляется как общий метод, поэтому в простых случаях, таких как это, вы можете использовать его без указания типа элемента.