如何在Swift 3中使用UnsafeMutablePointer?

发布于 2021-01-31 23:45:26

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

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

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

无法使用类型为((UnsafeMutableRawPointer)’的参数列表来调用类型’UnsafeMutablePointer <_>’的初始化程序

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

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

关注者
0
被浏览
103
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    我建议您使用Data而不是NSDataSwift 3。

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

    withUnsafeMutableBytes(_:) 声明为通用方法,因此在诸如此类的简单情况下,无需指定元素类型就可以使用它。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看