简体   繁体   English

如何在Swift 3中使用UnsafeMutablePointer?

[英]How to use UnsafeMutablePointer in Swift 3?

I have the following code written in Swift 2.2: 我在Swift 2.2中编写了以下代码:

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

XCode 8 highlights that second line and claims that XCode 8强调了第二行并声称

Cannot invoke initializer for type 'UnsafeMutablePointer<_>' with an argument list of type '(UnsafeMutableRawPointer)' 无法使用类型为'(UnsafeMutableRawPointer)'的参数列表调用类型'UnsafeMutablePointer <_>'的初始值设定项

While I appreciate XCode telling me this, I don't quite understand how to change the UnsafeMutableRawPointer to be acceptable. 虽然我很欣赏XCode告诉我这一点,但我不太明白如何将UnsafeMutableRawPointer更改为可接受。

Does anyone know how to convert this code into Swift 3? 有谁知道如何将此代码转换为Swift 3?

I recommend you to work with Data rather than NSData in Swift 3. 我建议你在Swift 3中使用Data而不是NSData

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

withUnsafeMutableBytes(_:) is declared as a generic method, so, in simple cases such as this, you can use it without specifying element type. withUnsafeMutableBytes(_:)被声明为泛型方法,因此,在这种简单的情况下,您可以在不指定元素类型的情况下使用它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用Swift的UnsafeMutablePointer <UnsafeMutablePointer <Void >>引用? - How do I work with a UnsafeMutablePointer<UnsafeMutablePointer<Void>> reference from Swift? 如何将数组转换为UnsafeMutablePointer <UnsafeRawPointer?> Swift 3.0? - How to convert array to UnsafeMutablePointer<UnsafeRawPointer?> Swift 3.0? 如何转换UnsafeMutablePointer <AudioBufferList> 到Swift中的AudioBuffer? - How to convert UnsafeMutablePointer<AudioBufferList> to AudioBuffer in Swift? 如何创建UnsafeMutablePointer <CGPoint> 迅速物体 - How to create UnsafeMutablePointer<CGPoint> Object in swift 如何dealloc从Swift结构中引用的UnsafeMutablePointer - How to dealloc UnsafeMutablePointer referenced from Swift struct 如何转换UnsafeMutablePointer <UInt8> 在Swift中使用UIImage - How to convert UnsafeMutablePointer<UInt8> to UIImage in Swift Swift 组合:PassthroughSubject UnsafeMutablePointer - Swift Combine: PassthroughSubject UnsafeMutablePointer Swift 5 的 UnsafeMutablePointer 警告 - UnsafeMutablePointer Warning with Swift 5 在 Swift 3 中用 UnsafeMutablePointer 编写 - Writing in UnsafeMutablePointer in Swift 3 如何获取 UnsafeMutablePointer 的长度<Object>在 Swift 中写入 OpenSSL BIO? - How to get length of a UnsafeMutablePointer<Object> written to a OpenSSL BIO in Swift?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM