首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换Data.withUnsafeBytes,因为SWIFT5.6中不推荐它

替换Data.withUnsafeBytes,因为SWIFT5.6中不推荐它
EN

Stack Overflow用户
提问于 2022-03-26 15:14:00
回答 1查看 177关注 0票数 1

我有一个生成挑战字符串的代码。

代码语言:javascript
复制
    private func codeChallenge(for verifier: String) -> String {
       guard let data = verifier.data(using: .utf8) else { fatalError() }
       var buffer = [UInt8](repeating: 0,  count: Int(CC_SHA256_DIGEST_LENGTH))
       data.withUnsafeBytes {
          _ = CC_SHA256($0, CC_LONG(data.count), &buffer)
       }
       let hash = Data(buffer)
       return hash.base64EncodedString()
        .replacingOccurrences(of: "+", with: "-")
        .replacingOccurrences(of: "/", with: "_")
        .replacingOccurrences(of: "=", with: "")
        .trimmingCharacters(in: .whitespaces)
    }

它按预期工作,但是它会产生警告:

代码语言:javascript
复制
'withUnsafeBytes' is deprecated: use `withUnsafeBytes<R>(_: (UnsafeRawBufferPointer) throws -> R) rethrows -> R` instead

我不确定我是否疯了,但警告再次引用了废弃的方法作为解决方案。我是不是遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-26 15:21:03

,我是不是遗漏了什么?

是。被反对的是

代码语言:javascript
复制
func withUnsafeBytes<ResultType, ContentType>(_ body: (UnsafePointer<ContentType>) throws -> ResultType) rethrows -> ResultType

替换者是

代码语言:javascript
复制
func withUnsafeBytes<ResultType>(_ body: (UnsafeRawBufferPointer) throws -> ResultType) rethrows -> ResultType

这两种方法中可能都有"withUnsafeBytes“一词,但这基本上是无关紧要的;它们是完全不同的方法,有着完全不同的签名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71629267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档