Как использовать «Data.withUnsafeMutableBytes» в Swift 5

Я обновил проект до 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?


person Kevin Wessels    schedule 16.04.2019    source источник
comment
Взгляните на stackoverflow.com/a/39820681/1187415, который был обновлен для Swift 5.   -  person Martin R    schedule 16.04.2019
comment
@MartinR Большое спасибо, это работает. Я не знаю, хотите ли вы опубликовать ответ, который я могу принять? В противном случае я просто отмечу этот вопрос как дубликат.   -  person Kevin Wessels    schedule 16.04.2019