ios – 在Swift 3.0中生成随机字节

ios – 在Swift 3.0中生成随机字节,第1张

概述我想在 Swift 3.0中使用SecRandomCopyBytes生成随机字节.这是我在Swift 2.2中的表现 private static func generateRandomBytes() -> String? { let data = NSMutableData(length: Int(32)) let result = SecRandomCopyBytes(kSe 我想在 Swift 3.0中使用SecRandomcopyBytes生成随机字节.这是我在Swift 2.2中的表现
private static func generaterandomBytes() -> String? {    let data = NSMutableData(length: Int(32))    let result = SecRandomcopyBytes(kSecRandomDefault,32,UnsafeMutablePointer<UInt8>(data!.mutableBytes))    if result == errSecSuccess {        return data!.base64EncodedString(options: NSData.Base64EnCodingOptions(rawValue: 0))    } else {        print("Problem generating random bytes")        return nil    }}

在Swift 3中,我尝试这样做,因为我知道unsafemutablebytes的概念现在不同了,但它不允许我返回.如果我注释掉返回部分,它仍然说无法推断通用参数ResultType

fileprivate static func generaterandomBytes() -> String? {    var keyData = Data(count: 32)    _ = keyData.withUnsafeMutableBytes {mutableBytes in        let result = SecRandomcopyBytes(kSecRandomDefault,keyData.count,mutableBytes)        if result == errSecSuccess {            return keyData.base64EncodedString(options: NSData.Base64EnCodingOptions(rawValue: 0))        } else {            print("Problem generating random bytes")            return nil        }    }    return nil}

有谁知道如何解决这一问题?

谢谢

解决方法 你很接近,但在关闭内部返回
从封闭,而不是从外部功能.
因此,只应在中调用SecRandomcopyBytes()
关闭,结果传回来.
func generaterandomBytes() -> String? {    var keyData = Data(count: 32)    let result = keyData.withUnsafeMutableBytes {        (mutableBytes: UnsafeMutablePointer<UInt8>) -> Int32 in        SecRandomcopyBytes(kSecRandomDefault,mutableBytes)    }    if result == errSecSuccess {        return keyData.base64EncodedString()    } else {        print("Problem generating random bytes")        return nil    }}

对于“单表达闭包”,闭包类型可以推断
自动,所以这可以缩短为

func generaterandomBytes() -> String? {    var keyData = Data(count: 32)    let result = keyData.withUnsafeMutableBytes {        SecRandomcopyBytes(kSecRandomDefault,)    }    if result == errSecSuccess {        return keyData.base64EncodedString()    } else {        print("Problem generating random bytes")        return nil    }}
总结

以上是内存溢出为你收集整理的ios – 在Swift 3.0中生成随机字节全部内容,希望文章能够帮你解决ios – 在Swift 3.0中生成随机字节所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102394.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存