Я обновил проект до Swift 5, он где-то генерирует ключ для шифрования со следующим фрагментом кода:
let result = key.withUnsafeMutableBytes { bytes in
SecRandomCopyBytes(kSecRandomDefault, 64, bytes)
}
При обновлении до Swift 5 я получаю следующее предупреждение:
'withUnsafeMutableBytes' is deprecated: use `withUnsafeMutableBytes<R>(_: (UnsafeMutableRawBufferPointer) throws -> R) rethrows -> R` instead
Но я понятия не имею, как реализовать то, что он хочет от меня, я нахожу предложение в лучшем случае расплывчатым, и все, что я пытаюсь, либо не компилируется, либо дает то же предупреждение.
Вот полная функция:
static func generateEncryptionKey() -> Data {
/// Generate a random encryption key
var key = Data(count: 64)
let result = key.withUnsafeMutableBytes { bytes in
SecRandomCopyBytes(kSecRandomDefault, 64, bytes)
}
assert(result == 0, "Failed to get random bytes")
let keyHexString = (key as NSData).hexStringRepresentation()
debugPrint("Newly generated encryption key - \(keyHexString)")
return key
}
Я пробовал разные способы написать withUnsafeMutableBytes
, но безрезультатно. Что было бы подходящей альтернативой приведенному выше коду в Swift 5?