我有以下用Swift 2.2编写的代码:

let keyData = NSMutableData(length: 64)!
SecRandomCopyBytes(kSecRandomDefault, 64, UnsafeMutablePointer<UInt8>(keyData.mutableBytes))

XCode 8突出显示了第二行,并声称



尽管我很欣赏XCode告诉我的内容,但我不太了解如何将UnsafeMutableRawPointer更改为可接受的。

有谁知道如何将此代码转换为Swift 3?

最佳答案

我建议您在Swift 3中使用Data而不是NSData

var keyData = Data(count: 64)
let result = keyData.withUnsafeMutableBytes {mutableBytes in
    SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes)
}
withUnsafeMutableBytes(_:)被声明为通用方法,因此,在诸如此类的简单情况下,无需指定元素类型就可以使用它。

10-08 08:19