Macos 如何在swift中导入DER证书?

Macos 如何在swift中导入DER证书?,macos,swift,Macos,Swift,因此,似乎有很多方法已经改变,这些方法打破了我当前代码库中的一些东西。我当前遇到以下错误: 无法将表达式的类型“(CFAllocator!,data:@lvalue NSData)”转换为类型“CFData!” 以下是相关代码: let mainbun = NSBundle.pathForResource("mainkey", ofType: "der", inDirectory: "/myapppath") var key: NSData = NSData(base64EncodedStrin

因此,似乎有很多方法已经改变,这些方法打破了我当前代码库中的一些东西。我当前遇到以下错误:

无法将表达式的类型“(CFAllocator!,data:@lvalue NSData)”转换为类型“CFData!”

以下是相关代码:

let mainbun = NSBundle.pathForResource("mainkey", ofType: "der", inDirectory: "/myapppath")
var key: NSData = NSData(base64EncodedString: mainbun!, options: nil)!
var turntocert: SecCertificateRef = SecCertificateCreateWithData(kCFAllocatorDefault, data: key)
我有一个桥接头工作,但我仍然希望能够直接在swift中创建证书引用


更新: 这很有效

var bundle: NSBundle = NSBundle.mainBundle()
var mainbun = bundle.pathForResource("keyfile", ofType: "der")
var key: NSData = NSData(contentsOfFile: mainbun!)!
var turntocert: SecCertificateRef =
SecCertificateCreateWithData(kCFAllocatorDefault, key).takeRetainedValue()

在Swift中,
SecCertificateCreateWithData
返回一个
非托管类型。您需要使用
takeRetainedValue()
获取非托管引用的值


您面临的核心问题是将
CFData
转换为
NSData

这是用于证书固定的吗?你在使用AFNetworking吗?@bbarnhart是的,用于证书固定,不,我没有使用AFNetworking这是一个不错的选择。我会花更多的时间在格式化上。你的错误隐藏在段落的末尾。解决方案中代码的缩进错误。代码上的滚动条总是一个不好的标志。你知道,我见过比你刚才提到的三个问题更糟糕的问题。也许斯威夫特的开发者只是因为他们的爱而廉价?这总是有可能的。社区吸引不同类型的个人。例如,C++标签吸引了你能想象到的最可恶的灵魂。不要进去。谢谢,我不得不做一些其他的小改动,但那是我的主要问题
let mainbun = NSBundle.pathForResource("mainkey", ofType: "der", inDirectory: "/myapppath")
var key: NSData = NSData(base64EncodedString: mainbun!, options: nil)!
var turntocert: SecCertificateRef = 
    SecCertificateCreateWithData(kCFAllocatorDefault, key).takeRetainedValue()