如何在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。