objective-c - 非托管 <SecKey> 不可转换为 SecKey

标签 objective-c encryption swift rsa

我想在 Swift 中进行 RSA 加密,但我在这一行遇到了一个奇怪的错误:

    var publicKey:SecKeyRef = KeyFormatter.getPublicKeyReference("com.apple.sample.publickey")

通常,在 Objective-C 中它没问题,'getPublicKeyReference' 方法返回一个 SecKeyRef 对象。但是当我根据 Swift 语法在 Swift 文件中键入它时,它会给我错误消息“Unmanaged is not convertible to SecKey”。

KeyFormatter 类仍然是用 Objective-C 编写的。因此,当我调用此方法(到桥接 header )时,返回类型在 Swift 中的表示方式不同吗?如果是这样,我该如何克服这个问题?

最佳答案

参见将 Swift 与 Cocoa 和 Objective-C 结合使用 -> Working with Cocoa Data Types -> 一直向下滚动到“核心基础”。

因为特定 API 当前未针对内存管理语义进行审核,您将需要调用 takeUnretainedValue()takeRetainedValue(),具体取决于该 API 的内存管理语义具体方法。

关于objective-c - 非托管 <SecKey> 不可转换为 SecKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890632/

相关文章:

objective-c - 当 UISearchBar 激活时调整 UIToolbar 的大小

objective-c - 如何让 IOS 应用信任本地主机以开发 API

mysql - 包含加密数据的 BLOB 上的索引

swift - 函数调用需要参数,但函数不带参数

ios - 核心数据堆栈的多个实例

ios - NSMutableURLRequest 的响应不包含信息

java - Hibernate - 通过用户名关系加密引用

mysql - Ansible 在其他变量中使用加密变量

swift - 我如何交换对象属性 Swift

ios - 从远程播放 MKV 视频