gpt4 book ai didi

ios - 无法调用 Unmanaged 的初始值设定项?快速无参数

转载 作者:行者123 更新时间:2023-11-30 12:12:56 26 4
gpt4 key购买 nike

我想要的是用 swift 将 RSA Sec key 转换为 base64 编码的字符串。所以我初始化了一个变量,如下所示,

var publicKeyBits = Unmanaged<AnyObject>?()

然后它给出

cannot invoke initializer for Unmanaged? with no arguments in swift

我想隐藏我的公钥,如下所示

var publicKeyBits = Unmanaged<AnyObject>?()
SecItemCopyMatching(queryAttrs, &publicKeyBits)

let opaqueBits = publicKeyBits?.toOpaque()
let publicKeyData = Unmanaged<NSData>.fromOpaque(opaqueBits).takeUnretainedValue()

let publicKeyBase64 = publicKeyData.base64EncodedData(NSDataBase64EncodingOptions.Encoding64CharacterLineLength)

错误。任何想法。

最佳答案

SecItemCopyMatching 声明为

public func SecItemCopyMatching(_ query: CFDictionary,
_ result: UnsafeMutablePointer<CFTypeRef?>?) -> OSStatus

因此您必须将 CFTypeRef? 的地址作为 inout 参数传递。(在早期的 Swift 版本中,这个函数返回一个非托管对象,现在情况已不再如此。)

您以 CFTypeRef(AnyObject 的类型别名)的形式检索该项目,然后将其转换为实际类型。示例:

var result: CFTypeRef?
let status = SecItemCopyMatching(queryAttrs, &result)
if status == errSecSuccess {
if let publicKeyData = result as? Data {
let base64 = publicKeyData.base64EncodedString()
}
}

关于ios - 无法调用 Unmanaged<AnyObject> 的初始值设定项?快速无参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45813984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com