Генерация случайных байтов в Swift 3.0
Я хочу генерировать случайные байты, используяSecRandomCopyBytes
в Swift 3.0. Вот как я это сделал в Swift 2.2
private static func generateRandomBytes() -> String? {
let data = NSMutableData(length: Int(32))
let result = SecRandomCopyBytes(kSecRandomDefault, 32, UnsafeMutablePointer<UInt8>(data!.mutableBytes))
if result == errSecSuccess {
return data!.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
} else {
print("Problem generating random bytes")
return nil
}
}
В Swift 3 я попытался сделать это следующим образом, поскольку я знаю, что концепция unsafemutablebytes теперь другая, но она не позволяет мне вернуться. Если я закомментирую обратную часть, она все равно говоритGeneric Parameter ResultType could not be inferred
fileprivate static func generateRandomBytes() -> String? {
var keyData = Data(count: 32)
_ = keyData.withUnsafeMutableBytes {mutableBytes in
let result = SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes)
if result == errSecSuccess {
return keyData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0))
} else {
print("Problem generating random bytes")
return nil
}
}
return nil
}
Кто-нибудь знает, как это исправить?
Спасибо