【发布时间】:2015-01-04 22:05:27
【问题描述】:
我在一个涉及 RSA 加密的 swift 项目中工作,我遇到了一个指针问题,如下所示:
我有一个全局的var publicKey: SecKey? 可选值,我需要得到指向它的UnsafeMutablePointer<Unmanaged<SecKey>?> 指针,这是SecKeyGeneratePair 函数中需要的数据类型。
我试图将指针定义为:
var keyPointer = UnsafeMutablePointer<Unmanaged<SecKey>?>(publicKey!)
但是编译器抱怨 Cannot invoke 'init' with an argument type of @lvalue SecKey 错误
根据 Using Swift with Cocoa and Objective-C 一书,在 Core Foundation 和 Unmanaged Objects 部分中,它指出Unmanaged<T> 结构提供takeUnretainedValue() 和takeRetainedValue() 2 个方法。但试图实现它们,会出现以下错误
var keyPointer = UnsafeMutablePointer<Unmanaged<SecKey>?>(publicKey!.takeRetainedValue())
“SecKey”没有名为“takeRetainedValue”的成员
任何解决此问题的帮助将不胜感激
【问题讨论】:
标签: ios encryption swift rsa unmanaged