Can´;无法在iOS Swift中获取SecKey unsafemtablepointer

Can´;无法在iOS Swift中获取SecKey unsafemtablepointer,ios,encryption,swift,rsa,unmanaged,Ios,Encryption,Swift,Rsa,Unmanaged,我在swift的一个项目中工作,涉及RSA加密,我遇到了如下指针问题: 我有一个全局var publicKey:SecKey?可选值,我需要获取指向它的unsafemtablepointer指针,这是SecKeyGeneratePair函数中所需的数据类型 我试图将指针定义为: var keyPointer = UnsafeMutablePointer<Unmanaged<SecKey>?>(publicKey!) “SecKey”没有名为“takeRetainedVa

我在swift的一个项目中工作,涉及RSA加密,我遇到了如下指针问题:

我有一个全局
var publicKey:SecKey?
可选值,我需要获取指向它的
unsafemtablepointer
指针,这是
SecKeyGeneratePair
函数中所需的数据类型

我试图将指针定义为:

var keyPointer = UnsafeMutablePointer<Unmanaged<SecKey>?>(publicKey!)
“SecKey”没有名为“takeRetainedValue”的成员。

如有任何帮助,我们将不胜感激

尝试以下方法:

var publicKey: SecKey?
var privateKey: SecKey?

var publicKeyUnManaged:Unmanaged<SecKey>?
var privateKeyUnManaged:Unmanaged<SecKey>?
let dic:[String:String] = [kSecAttrKeyType:kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits:"2048"]
SecKeyGeneratePair(dic, &publicKeyUnManaged, &privateKeyUnManaged)

publicKey = publicKeyUnManaged?.takeRetainedValue()
privateKey = privateKeyUnManaged?.takeRetainedValue()
var publicKey:SecKey?
var privateKey:SecKey?
var publicKeyUnManaged:非托管?
var privateKeyUnManaged:非托管?
让dic:[String:String]=[kSecAttrKeyType:kSecAttrKeyTypeRSA,kSecAttrKeySizeInBits:“2048”]
SecKeyGeneratePair(dic、&publicKeyUnManaged和&privateKeyUnManaged)
publicKey=publicKeyUnManaged?.takeRetainedValue()
privateKey=privateKeyUnManaged?.takeRetainedValue()
您不必手动创建
unsafemtablepointer
。如中所述

当函数被声明为采用UnsafemeutablePointer参数时,它可以接受以下任一项:

  • nil,作为空指针传递
  • 不可配置的指针值
  • 一种输入输出表达式,其操作数是类型为的存储左值,作为左值的地址传递
  • 一个in-out[Type]值,作为指向数组开头的指针传递,并在调用期间延长生存期
在这种情况下,我们可以使用第三个“In-out”表达式。

尝试以下方法:

var publicKey: SecKey?
var privateKey: SecKey?

var publicKeyUnManaged:Unmanaged<SecKey>?
var privateKeyUnManaged:Unmanaged<SecKey>?
let dic:[String:String] = [kSecAttrKeyType:kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits:"2048"]
SecKeyGeneratePair(dic, &publicKeyUnManaged, &privateKeyUnManaged)

publicKey = publicKeyUnManaged?.takeRetainedValue()
privateKey = privateKeyUnManaged?.takeRetainedValue()
var publicKey:SecKey?
var privateKey:SecKey?
var publicKeyUnManaged:非托管?
var privateKeyUnManaged:非托管?
让dic:[String:String]=[kSecAttrKeyType:kSecAttrKeyTypeRSA,kSecAttrKeySizeInBits:“2048”]
SecKeyGeneratePair(dic、&publicKeyUnManaged和&privateKeyUnManaged)
publicKey=publicKeyUnManaged?.takeRetainedValue()
privateKey=privateKeyUnManaged?.takeRetainedValue()
您不必手动创建
unsafemtablepointer
。如中所述

当函数被声明为采用UnsafemeutablePointer参数时,它可以接受以下任一项:

  • nil,作为空指针传递
  • 不可配置的指针值
  • 一种输入输出表达式,其操作数是类型为的存储左值,作为左值的地址传递
  • 一个in-out[Type]值,作为指向数组开头的指针传递,并在调用期间延长生存期

在这种情况下,我们可以使用第三个“In-out”表达式。

对于Swift 2.1,它不适用于非托管,正确的版本是:

var publicKey: SecKey?
var privateKey: SecKey?

let dic:[String:String] = [kSecAttrKeyType:kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits:"2048"]
SecKeyGeneratePair(dic, &publicKey, &privateKey)

对于Swift 2.1,它不适用于非托管,正确的版本是:

var publicKey: SecKey?
var privateKey: SecKey?

let dic:[String:String] = [kSecAttrKeyType:kSecAttrKeyTypeRSA, kSecAttrKeySizeInBits:"2048"]
SecKeyGeneratePair(dic, &publicKey, &privateKey)