如何在Swift 3中使用UnsafeMutablePointer?

我有下面的代码写在Swift 2.2中:

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

XCode 8强调了第二行,并声称

无法使用types为“(UnsafeMutableRawPointer)”的参数列表调用types为“UnsafeMutablePointer <_>”的初始值设定项

虽然我很欣赏XCode告诉我这一点,但我不太了解如何将UnsafeMutableRawPointer更改为可接受的。

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

我build议你在Swift 3中使用Data而不是NSData

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

withUnsafeMutableBytes(_:)被声明为generics方法,因此,在这种简单的情况下,您可以使用它,而无需指定元素types。