Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 非托管<;SecKey>;不能转换为SecKey_Objective C_Encryption_Swift_Rsa - Fatal编程技术网

Objective c 非托管<;SecKey>;不能转换为SecKey

Objective c 非托管<;SecKey>;不能转换为SecKey,objective-c,encryption,swift,rsa,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 co

我想在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编写的。所以,当我调用这个方法(到桥接头)时,返回类型在Swift中的表示是不同的?如果是这样,我如何克服这个问题?

请参阅将Swift与Cocoa和Objective-C一起使用->->一直向下滚动到“核心基础”


由于该特定API当前未针对内存管理语义进行审核,因此需要根据特定方法的内存管理语义调用
takeUnrepainedValue()
takeRetainedValue()

我猜这是托管/非托管代码的一般问题。您可能需要整理/取消整理对象,或者使用分解/合成重新创建对象。不幸的是,我不知道怎么做,否则我会给你答案;我必须保持这个暗示,希望是正确的方向。谢谢,这解决了我的问题。var pKey:SecKeyRef=publicKey.takeRetainedValue()使用这一行,现在我可以毫无问题地获取SecKeyRef对象了。:)